Каково соглашение для динамического создания экземпляра объекта? - PullRequest
1 голос
/ 11 февраля 2011

Я создаю страницу, которая позволит вам разместить на ней несколько виджетов, и некоторые виджеты могут дублироваться на странице.Поэтому мне нужно понять правильное соглашение для создания экземпляра объекта на лету.

// my bulb object
var bulb = {
    state: 0
};

// programatically, hard-coded instance name of 'bulb1'
var bulb1 = new bulb();

$('button').click(function() {
    // create another new bulb instance here with dynamic name
});

Или я просто иду по неверному пути все вместе?

Спасибо.

1 Ответ

2 голосов
/ 11 февраля 2011

В JavaScript мы используем функции (так называемые функции конструктора) для создания экземпляров объектов.

function Bulb() {
    this.state = 0;
}

// one instance
var bulb1 = new Bulb();

// another instance
var bulb2 = new Bulb();

Ваш код не работает, потому что ваш bulb является обычным объектом, а не функцией, поэтому вы не можете вызвать его (что вы пытаетесь сделать с bulb()).


Обновление: Вы можете сохранить свои экземпляры в глобальной переменной Array:

var bulbs = [];

А потом, всякий раз, когда вы создаете новый экземпляр, просто убедитесь, что вы поместили его в массив.

$('button').click(function() {
    var bulb = new Bulb();

    // do stuff with bulb

    // make sure to store it into the Array
    bulbs.push(bulb);
});

Вы можете получить доступ к экземплярам в любое время, например:

bulbs[0] // the 1. instance
bulbs[1] // the 2. instance
// etc.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...