var n=1; 与 var n=new Numer(1)的区别
全局函数(构造函数)
原型(prototype)和原型链
对象.proto === 构造了它的全局函数.prototype (新创建的对象由对应的全局函数构造得来)
全局函数.proto === Function.prototype(全局函数都是由Function构造出来的)
全局函数.prototype.proto === Object.prototype (全局函数的共有属性从Object的共有属性中引用)
Object.prototype.proto === null (Object的共有属性引用至null)
原型 === 共有属性 === prototype
原型链:顺着proto组成的链子一直往下走,直到proto 为 null
全局函数(构造函数)
全局函数都是由Function构造的,因此
全局函数.proto === Function.prototype
Function.proto === Function.prototype
1.Number
2.String
3.Boolean
4.Object
原型和原型链
原型 === 共有属性 === prototype
原型链:顺着proto组成的链子一直往下走,直到proto 为 null
隐藏的公用属性(prototype)
所有对象都有 toString 和 valueOf 属性,那么我们是否有必要给每个对象一个 toString 和 valueOf 呢?
明显不需要。
JS 的做法是把 toString 和 valueOf 放在一个对象里(Object.prototype)
然后让每一个对象有1个隐藏的 proto 存储这个「公用属性组成的对象」的地址。
Object的proto指向Function.prototype
重点公式
|
|