通常创建一个你要写的对象:
function Dog(name) {
this.name = name;
}
fifi = new Dog("fifi");
如何动态命名对象以便我可以写:
var name = "fifi";
[name] = new Dog(name);
实现与以下相同的结果:
fifi = new Dog("fifi");
答案 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);
或传递任何其他对象作为范围。
但我不会将对象和变量绑在一起。对象的一个优点是你可以自由地传递它们,并且几个变量可以引用同一个对象 我会给它一个更有意义的名称,它描述该对象的目的。