【发布时间】:2015-09-06 06:59:07
【问题描述】:
获取下面给定的代码并将其与之后的代码进行比较:
var protoShoe = {isShoe:true, isGenderSpecific: false}
protoShoe = Object.create(protoShoe);
protoShoe.isGenderSpecific= true; protoShoe.gender = "mens";
protoShoe = Object.create(protoShoe);
protoShoe.isGenderSpecific= false; protoShoe.gender = "na";
console.log("Is protoShoe prototype of protoShoe:" + protoShoe.isPrototypeOf(protoShoe));
console.log(protoShoe);
VS
var protoShoe = {isShoe:true, isGenderSpecific: false}
mensShoe = Object.create(protoShoe);
mensShoe.isGenderSpecific= true; mensShoe.gender = "mens";
protoShoe = Object.create(mensShoe);
protoShoe.isGenderSpecific= false; protoShoe.gender = "na";
console.log("Is mensShoe prototype of protoShoe:" + mensShoe.isPrototypeOf(protoShoe));
console.log(protoShoe);
最终的对象在继承属性上看起来非常相似,但是在第一种情况下,我们只是继续重复使用protoShoe 对象,最后它不是它自己的原型,这是为什么呢?如果是这样会导致什么问题?
我只是想更好地理解原型继承,这只是一个愚蠢的实验,但我发现第一个的 isPrototypeOf 值很有趣。
【问题讨论】:
-
这是一个 Javascript 相关的问题吗?
标签: javascript object overriding prototype