JS 原型与原型链
一. 对象
二. 构造函数属性 constructor;
每 一个对象都有constructor属性(构造函数属性),对象的constructor属性指向该对象的构靠函数(生成他的类)。
1,普通对象.constructor==Object; 即a.constructor==Object;
2,函数对象.constructor==该对象的构造函数; 即b.constructor==class;
输入结果
三. 原型对象 prototype
结论:
1,普通对象没有prototype属性
2,函数对象的prototype属性指向一个对象,名称叫做“原型对象”,最后一处的TRUE,也充分证明了原型对象就是一个对象。因为上面说过:函数对象.constructor==该对象的构造函数;
四. __proto__
JS 在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做__proto__
的内置属性,用于指向创建它的构造函数的原型对象。
输出结果
结论:非原型对象的__proto__属性指向构造函数的原型对象;
那么原型对象的__proto__属性指向什么?
通过上面的图,可以看出,实列对象:gaoliang.__proto__指向的是他的构造函数的原型对象,输出对象属性有560(上面测试中赋的值)
ren.prototype.__proto__则输出对象有V:1300,也就是Object的原型对象。不信的话,可以试下这个的打印,输入肯定是TURE : ren.prototype.__proto__==Object.prototype
ren.__proto__ == Function.prototype ??????成立
Object与Function 是啥关系?
alert(Object.constructor == Function)//成立
alert(Object.__proto__ == Function.prototype)//成立,
结论:Object是Function的实例对象