分享一道原型的题目
Posted sss大辉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分享一道原型的题目相关的知识,希望对你有一定的参考价值。
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
以上是关于分享一道原型的题目的主要内容,如果未能解决你的问题,请参考以下文章