记住下面三个属性,记住记住记住呀。
prototype // 每个函数都有。
__proto__ // 指向该对象的原型。 (每一个JavaScript对象(除了 null )都具有的一个属性)
constructor // 原型指向关联构造函数。
小黑屋:null没有原型。
原型
代码配合上图图解。
function 人() {
}
var 小明 = new 人();
小明.__proto__ == 人.prototype // true
人.prototype.constructor == 人 // true
注意点:
小明.constructor === 人 // true
代码解,小明没有 constructor 属性,会去原型里面找,正好原型有 constructor 属性(看上图)。然而 constructor 指向关联构造函数是人 结果为真。 so so so 。。。【小明:哇丢我是人啊,当然真呀】!
原型链
概要:原型又有原型。
Object.prototype.__proto__ === null // true
小明.__proto__.__proto__.__proto__ === null // true
Object.prototype 没有原型了。。。终于到头了。