JavaScript constructors

痞子三分冷 提交于 2019-12-13 02:44:19

问题


I do not understand quite completely how to apply constructors on this object creation method:


var MyObject = {
   ...
};

I know that you can do:


var MyObject = new Object();
MyObject.prototype.constructor = function(props)
{
  ...
}

or...


function MyObject(prop1, prop2)
{
 this.prop1 = prop1;
 ...
}

Can I do something like this?


var MyObject = {
   MyObject: function(prop1, prop2)
   {
     ...
   }
}

回答1:


No, you can't, that would simply create a (static) method on MyObject -- MyObject.MyObject. In JavaScript, a constructor is the class. Class methods and properties are created either inside the constructor using this. or by adding to the prototype (outside of the constructor) using MyClass.prototype.. You can think of "objects" in JavaScript as static classes.




回答2:


Example from here

Creating constructors

To write your own constructors, you use the this keyword within the constructor to refer to the newly-created object. The constructor initializes the object.

In the example below:

The make7Table constructor creates a multiplication table for number 7 The size property is introduced to keep track of the number of elements The value of each element is initialized

function make7Table(numElements)
{
    this.size = numElements;
    var cnt;
    for(cnt = 0; cnt < numElements; cnt++)
    {
        this[cnt] = cnt*7;
    }
}

// Use the constructor to create and initialize an array.
myArray = new make7Table(10);
document.write(myArray[5]);
document.write("This table has " + myArray.size + " elements");

To run the code, paste it into JavaScript Editor, and click the Execute button. myArray[5] retrieves the element with the value of 5*7 = 35.




回答3:


var MyObject = new Object();
MyObject.prototype.constructor = function(props)
{
    ...
}

is the same as

var MyObject = {};
MyObject.prototype.constructor = function(props)
{
    ...
}


来源:https://stackoverflow.com/questions/2096141/javascript-constructors

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!