【javascript之__proto__&constructor】
constructor:对象构造器。
prototype:访问对象构造器的原型,只有函数才具有这个属性。
isPrototypeOf:如果对象 A 存在于 对象obj的原形链中,则 A.isPrototypeOf(obj)返回true,而obj必定继承了A 的属性。
__proto__:访问对象的原型链在当前对象的上一级对象,即对象的父级对象,非W3C 或 ECMAscript 标准,是浏览器对原型继承的一种实现手段,存在于firefox 和 chrome ,IE下不存在这个属性。
在对象的继承关系中,对象obj的构造器 constructor 其实是存在于原型链中的,
即 obj.constructor 实际上是 obj.__proto__.constructor, obj.hasOwnProperty('constructor'); 为 false
例1:
function Y() {this.y=99;}
var obj = new Y();
console.log(obj.constructor); //Y
console.log(obj.hasOwnProperty('constructor')); //false
console.log(obj.__proto__.hasOwnProperty('constructor')); //true
例2:
//=====
function X(){this.x=88; }
function Y() {this.y=99;}
Y.prototype = new X();
var obj = new Y();
console.log(obj.constructor); //X
console.log(obj.hasOwnProperty('constructor'));//false
console.log(obj.__proto__.hasOwnProperty('constructor')); //false
console.log(obj.__proto__.__proto__.hasOwnProperty('constructor')); //true