标签:属性 ror 依次 重写 == find name 没有 原型链
function P() {} var p1 = new P(); P.prototype.age = 18; P.prototype = { constructor: P, name: ‘zz‘ } P.prototype.num = 20; P.prototype.age = 22; console.log(p1.name); console.log(p1.age, ‘dd‘); console.log(p1.num); var p2 = new P(); console.log(p2.name); console.log(p2.num); console.log(p2.age);
里面依次输出为: undefined;18,‘dd‘;undefined;zz;20;22 分析: 这里主要考察的是,实例到是跟哪个原型对象有委托关系的; 首先p1是跟原P的原型对象有委托关系,即他会有age; 但是后面P重写了原型,P.prorotype会创建一个新的原型对象,而p1.__proto__仍然指向原来的那个旧的原型对象; 所以p1的name,num都是undefind,他是指向旧的原型链,而旧的原型链上没有这些属性。 p2实例化的时候,原型已经重写了,p2.__proto__指向新的原型对象,会有重写之后的属性,如name,num,新age;
即可以通过原型链上看
console.log(p1.__proto__ === P.prototype); //false
console.log(p2.__proto__ === P.prototype); //true
标签:属性 ror 依次 重写 == find name 没有 原型链
原文地址:https://www.cnblogs.com/ssszjh/p/12915229.html