Конструкторы JavaScript - PullRequest
0 голосов
/ 19 января 2010

Я не совсем понимаю, как применять конструкторы к этому методу создания объекта:


var MyObject = {
   ...
};

Я знаю, что вы можете сделать:


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

или ...


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

Могу ли я сделать что-то подобное?

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

Ответы [ 3 ]

1 голос
/ 19 января 2010
var MyObject = new Object();
MyObject.prototype.constructor = function(props)
{
    ...
}

совпадает с

var MyObject = {};
MyObject.prototype.constructor = function(props)
{
    ...
}
1 голос
/ 19 января 2010

Нет, вы не можете, это просто создало бы (статический) метод для MyObject - MyObject.MyObject. В JavaScript конструктор является классом. Методы и свойства класса создаются либо внутри конструктора, используя this., либо путем добавления к прототипу (вне конструктора), используя MyClass.prototype.. Вы можете думать о «объектах» в JavaScript как о статических классах.

1 голос
/ 19 января 2010

Пример из здесь

Создание конструкторов

Чтобы написать свои собственные конструкторы, вы используете ключевое слово this в конструкторе для ссылки на вновь созданный объект. Конструктор инициализирует объект.

В приведенном ниже примере:

Конструктор make7Table создает таблицу умножения для числа 7 Свойство size введено для отслеживания количества элементов Значение каждого элемента инициализируется

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");

Чтобы запустить код, вставьте его в редактор JavaScript и нажмите кнопку «Выполнить». myArray [5] извлекает элемент со значением 5 * 7 = 35.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...