全局函数
javascript提供了一些全局函数如 Number()、String()、Boolean()、Object()等
//两者有和区别呢?var n1 = 1;var n2 = new Number(1);//区别点:n1 和 n2 的内存图不一样//n2是一个对象,对象内有Number提供的api供内使用,而n1只是一个基本类型的numbern2.toString() // "1"typeof n1 === "number" //truetypeof n2 === "object" //true复制代码为什么 n1.toString() 也能使用? Javascript中三种原始类型的值——数值、字符串、布尔值分别有其相应的 ,在一定条件下,原始类型会自动转为对象。
共用属性
对象是由构造函数生成的,同一个构造函数生成的不同实例对象共享一些属性(公用属性)
var 实例对象 = new 构造函数()
每一个实例对象都有一个__proto__属性,它指向的是构造它的函数的prototype属性,该属性保存着该类对象所共享的属性
n.__proto__ === Number.prototypes.__proto__ === String.prototypeb.__proto__ === Boolean.prototypeo.__proto__ === Object.prototype复制代码
浏览器为我们做了一些事情
Object.prototype Number.prototype String.prototype Boolean.prototype 是由浏览器事先提供好的
你只需要通过 var s = new String('123')就完成了 s的所有api绑定
proto 和 prototype
Number.__proto__ === Function.prototypeString.__proto__ === Function.prototypeBoolean.__proto__ === Function.prototypeFunction.__proto__ === Function.prototype复制代码