如何在javascript中动态命名和创建对象?

时间:2010-12-25 11:17:59

标签: javascript oop

通常创建一个你要写的对象:

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

fifi = new Dog("fifi");  

如何动态命名对象以便我可以写:

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

实现与以下相同的结果:

fifi = new Dog("fifi");

2 个答案:

答案 0 :(得分:3)

如果您知道要创建变量的对象(属性,而不仅仅是变量),您可以使用bracket notation,如下所示:

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

稍后您可以通过以下方式访问它:

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

如果它是你所追求的全局变量,那么该对象(而不是上面的dogs)将只是window

答案 1 :(得分:3)

这样就可以了:

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

然后你可以这样做:

createDog('fifi', window);

或传递任何其他对象作为范围。

但我不会将对象和变量绑在一起。对象的一个​​优点是你可以自由地传递它们,并且几个变量可以引用同一个对象 我会给它一个更有意义的名称,它描述该对象的目的