2012-04-05 90 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);