2013-11-23 30 views
2

如果我有這樣的對象:如何引用類使用可變

var myclass = { 

    foo: { 
    bar: function(var) {} 
    }, 
    some: { 
    bar: function(var) {} 
    } 
} 

,我想這取決於定義對象的這樣父級別的變量酒吧函數來調用:

var part = "some"; 
myclass.part.bar(var); 

我該怎麼辦?

+0

你說的 '父級' 是什麼意思?你的意思是*上下文*(在函數中又名「this」)? – ComFreek

+0

我的意思是「富」或「一些」 –

回答

5

可以使用數組訪問符號做到這一點:

myclass[part].bar(var); 

JavaScript對象就像關聯數組,你可以使用屬性名來設置或獲取屬性的值,你甚至可以創建具有新特性這個語法。

例如:

var obj = { a : 1 }; 
console.log(obj["a"]); // 1 
obj["b"] = 2; // this creates a property called b and assigns 2 as the value 
console.log(obj["b"]); // 2 
0

你可以把一個函數作爲變量,這是不是字符串乾淨了一點參考。

還是保持到了部分的引用:

var part = myclass.foo;//or myclass.some 
part.bar.call(myclass, var);