在JavaScript中将对象的名称作为字符串传递时,是否可以访问对象?

时间:2014-02-11 12:49:58

标签: javascript object properties

说我正在这样做:

Foo = function () {};

o = Object.create(Foo, { p: {
  value: 42,
  writable: true,
  enumerable: true,
  configurable: true }
});
o.prototype.bar = function () {console.log("hello");};

var x = "o";
window.o = o;
Object.defineProperty(window[x], "foo", { value: 123});

问题
有没有办法在o上设置属性而不先将其添加到另一个对象(在本例中为窗口)?

1 个答案:

答案 0 :(得分:1)

是的,另一种方式是eval。但是,将对象作为属性添加到像您一样的对象确实是可行的方法,明确限制(“列入白名单”)可能的名称。当然你也可以使用if-elseswitch,但这些写作很乏味。