我正在学习JavaScript中的原型,并且遇到了这种行为,我想这只是事实,但是想知道它是否有任何实际的原因......
我们假设您创建了一个对象:
function Stormtrooper(){}
然后想要快速填写一些属性和方法,因为毕竟他们是冲锋队和他们会是相同的:)(更好的理由,你不想要每一个实例创建了它拥有自己的个人属性和方法,这会浪费内存并导致重复。)
Stormtrooper.prototype = {
name : null,
type: null,
ID : null,
rank : null,
'years of service' : null,
weapon : null,
utilityBelt : null,
giveReport : function(){
alert('"Click.." This is '+ this.type +' ' + this.ID + ', everything is clear... Nothing to report..."Click"');
}
};
当您console.dir(Stormtrooper.prototype);
并打开__proto__:
属性然后查看它的constructor
属性时,它将指向Object
,如同是所有本地对象的结束。为什么呢?
我知道你可以在最初创建时明确添加constructor
属性,但是想知道为什么会这样? (它指向Object
而不是Stormtrooper
)。
提前致谢!
答案 0 :(得分:1)
从对象文字创建的任何对象:
var obj = { hello: "world" };
将是由Object构造函数构造的普通对象。这正是你在代码中得到的:
Stormtrooper.prototype = {
// ...
};