【问题标题】:why every javascript object has constructor property?为什么每个 javascript 对象都有构造函数属性?
【发布时间】:2014-10-03 12:19:55
【问题描述】:

只是试图理解为什么每个 JavaScript 对象都有一个构造函数属性。

由于对象已经创建,有没有使用构造函数属性?

var MyFunc = function (name){this.name=name}

var instance = new MyFunc("myclass");

现在实例有一个构造函数属性,它引用了 MyFunc 本身。在实例上拥有构造函数属性有什么用?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    它比这复杂得多:没有对象,在,JS 默认有一个constructor 属性,但他们的 prototype(如果对象有原型)有一个。

    另外,请注意:constructor 引用了一个函数,但该原型属性不是只读的,因此可以轻松更改该属性,因此不要依赖它。

    【讨论】:

      【解决方案2】:

      这能回答你的问题吗?

      var dog1= {"a":1}
      
      function Dog ()
      {
      
      }
      
      
      dog2= new Dog();
      
      console.log(dog1.constructor) //function Object() { [native code]...
      console.log(dog2.constructor) //function Dog()...
      

      有时您需要知道对象是如何创建的。 (更不用说原型是构造函数属性)

      【讨论】:

      • 我们可以使用instanceof吗?
      • 我明白其中的区别。仍然为什么需要构造函数属性。我们真的需要比较构造函数吗?
      • @GauravSingla 如果你想修改Dog.prototype,但你只能访问dog2实例,你可以通过dog2.constructor.prototype访问Dog.prototype
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 2011-04-30
      相关资源
      最近更新 更多