2015-08-15 125 views
0

我有一個函數名稱=「測試」。如何在知道函數名稱的類中調用函數?

如何在知道函數名稱的類中調用this.test()函數?

我猜我可以使用eval()函數,但那是行不通的?

如何在javascript中僅使用字符串名稱來調用類函數?

+3

你能提供一個代碼示例嗎? – emd

+0

簡單''className ['methodeName']()' – vinayakj

+0

call like:this [name](); – venkat7668

回答

1

使用括號表示法。

this["test"](/* args */); 

name = "test"; 
this[name](/* args */); 
1

調用的函數,就像沒有對象上下文中的普通功能,只需獲得對它的引用,並調用它。例如:

var name = "test"; 
var f = obj[name]; 
f(1, 2); 

要調用它作爲對象的方法,得到的功能的基準然後使用call方法來調用它來設置的上下文。例如:

var name = "test"; 
var f = obj[name]; 
f.call(obj, 1, 2); 

如果是對象的一個​​方法中,可以使用的代替this對象引用obj我上面使用。

0

爲了讓您的代碼更加安全,我建議您檢查它是否爲函數。

var a='functionName' 
if (typeof this[a]!='function') 
    alert('This is not a function') 
else 
    this[a]() 
相關問題