Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中以字符串形式传递对象名称时,我可以访问对象吗?_Javascript_Object_Properties - Fatal编程技术网

在JavaScript中以字符串形式传递对象名称时,我可以访问对象吗?

在JavaScript中以字符串形式传递对象名称时,我可以访问对象吗?,javascript,object,properties,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(wind

假设我正在这样做:

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
上设置属性而不首先将其添加到另一个对象(在本例中为窗口)?

是的,另一种方法是
eval
。然而,将对象作为属性添加到像您这样的对象中确实是一种方法,明确限制(“白名单”)可能的名称。当然,你也可以使用
if else
switch
,但写起来很枯燥。

好主意与坏主意
评估
或坏主意…取决于你使用它的目的。在我的情况下,坏主意。。。我还是没想过。