今天在读《javascript 面向对象编程指南》第6章 继承的时候,6.13节 构造器借用中有段代码为:
function Shape(id){
this.id = id;
}
function Triangle(){
Shape.apply(this,arguments);
}
Triangle.prototype = new Shape(100);
var t = new Triangle(200);
书中所说,对象中有一个自身属性id,但它并非来自原型链中,然后执行了一系列操作:
> t.__proto__.id // 100
> delete t.id
> t.id // 100
为什么这个id不是来自于原型链,我用 t.hasOwnProperty('id')
发现结果为false
那就说明这个id不是本身的,那既不是来自于原型链,也不是来自自身,那这个id来自于哪里,还是说这本书这里有错误?
t自己有1个id=200,t的__proto__也就是Triangle.prototype有一个id=100。
执行delete t.id是删了t自己的id,再访问t.id的时候,其实是访问Triangle.prototype.id