为什么这种语法会使它的属性构造函数更长时间指向它自己的构造函数?

时间:2015-05-14 13:24:53

标签: javascript constructor

我正在学习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)。

提前致谢!

1 个答案:

答案 0 :(得分:1)

从对象文字创建的任何对象:

var obj = { hello: "world" };

将是由Object构造函数构造的普通对象。这正是你在代码中得到的:

Stormtrooper.prototype = {
  // ...
};