Как вы динамически называете и создаете объект в javascript? - PullRequest
2 голосов
/ 25 декабря 2010

обычно для создания объекта вы должны написать:

function Dog(name) {  
  this.name = name;  
}  

fifi = new Dog("fifi");  

Как мне динамически назвать объект, чтобы я мог написать:

var name = "fifi";  
[name] = new Dog(name); 

для достижения того же результата, что и:

fifi = new Dog("fifi");

Ответы [ 2 ]

3 голосов
/ 25 декабря 2010

Это будет сделано:

function createDog(name, scope) {
    scope[name] = new Dog(name);
}

Тогда вы можете сделать:

createDog('fifi', window);

или передайте в качестве области действия любой другой объект.

Но я бы не связывал объекты и переменные так, чтобы они были вместе. Одним из преимуществ объектов является то, что вы можете свободно передавать их, и несколько переменных могут иметь ссылку на один и тот же объект.
Я бы дал ему более осмысленное имя, которое описывает цель этого объекта.

3 голосов
/ 25 декабря 2010

Если вам известен объект, для которого вы создаете переменную (свойство, а не просто переменная), вы можете использовать обозначение в скобках , например:

var dogs = {};
dogs[name] = new Dog(name);

Позже вы можете получить к нему доступ любым способом:

dogs.fifi
//or...
dogs["fifi"]

Если вам нужна глобальная переменная, этот объект (вместо dogs выше) будет просто window.

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