2012-04-05 93 views
1

我已經遇到了一些代碼,它允許你函數名的字符串轉換爲一個函數,並使用它:將JavaScript字符串轉換爲對象方法並調用它?

var strFun = "someFunction"; 
var strParam = "this is the parameter"; 

//Create the function 
var fn = window[strFun]; 

//Call the function 
fn(strParam); 

我想知道是否有辦法做到爲對象的方法相同,例如:

var fn = window["onclick"]; 
var body = document.body; 
body.onclick = function() { 
    alert('yo'); 
} 
// This won't work [Uncaught TypeError: Object #<HTMLBodyElement> has no method 'fn'] 
body.fn(); // expecting body.onclick(); via substitution of fn with a onclick function 
+1

什麼不起作用? – rlemon 2012-04-05 03:05:44

+0

哎呦我抽象地思考,我忘了那是有效的JavaScript代碼,我重新說了我想說的話。 – Derek 2012-04-05 03:11:34

+0

@Derek:你的代碼仍然沒有意義。你正在創造一件事,並打電話給另一件事。 – 2012-04-05 03:14:24

回答

2

我認爲你正在尋找:

var body = document.body; 
body.onclick = function() { 
    alert('yo'); 
} 

var strfun = 'onclick'; 
var fn = body[strfun]; 
fn(); 

調用正文的onclick函數。

+0

不錯。謝謝。 3char – Derek 2012-04-05 03:25:57

+0

@德里克不客氣:) – Paulpro 2012-04-05 04:04:34

0

您可以直接調用該函數在對象的上下文:

fn.call(your object);