2014-02-11 38 views
0

說我這樣做:在JavaScript中將對象的名稱作爲字符串傳遞時,我可以訪問對象嗎?

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

是的,另一種方式是eval。但是,將對象作爲屬性添加到像您這樣的對象的確是要走的路,明確限制(「白名單」)可能的名稱。當然你也可以使用if-elseswitch,但是這些都很繁瑣。

+0

好主意與邪惡'eval' – frequent

+0

或壞主意......取決於你正在使用它。 – Bergi

+0

在我的情況壞主意...仍然 - 沒有考慮它。 – frequent

相關問題