我目前正试图弄清楚原型继承在 JavaScript 中是如何工作的。这是我目前试图解决的谜团。
假设我们设置了以下结构:
var base = { greet : "hello" }
var child = function () {}
child.prototype = base;
child.prototype.protoSomething = function () {}
var instance = new child();
没有什么花哨。现在让我们看看instance
属性(拥有或其他)有什么:
for(prop in instance) {
console.log(prop); // prints 'greet', 'protoSomething'
}
好的,所以它有greet
,protoSomething
他们instance
是自己的成员吗?
for(prop in instance) {
if(instance.hasOwnProperty(prop))
console.log(prop); // nothing is printed
}
不,自己的财产清单是空的。它们在instance
的原型中吗?
if(instance.prototype === undefined) {
console.log("'instance' has no prototype"); // gets printed
}
好吧,真可惜,instance
没有分配原型。那么,如果这些属性不是自己的并且没有原型,那么它们是从哪里来的呢?在这一点上,我觉得某种图表会非常好。