将javascript字符串转换为对象方法并调用它?

将javascript字符串转换为对象方法并调用它?,javascript,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

我遇到了一些允许您将函数名字符串转换为函数并使用它的代码:

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
var fn=window[“onclick”];
var body=document.body;
body.onclick=函数(){
警惕(‘yo’);
}
//这不起作用[UncaughtTypeError:Object#没有方法'fn']
body.fn();//应为body.onclick();通过用onclick函数替换fn

您可以在对象的上下文中调用函数:

fn.call(your object);

我想你在寻找:

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

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

调用主体的onclick函数。

哎呀,我在抽象地思考,我忘了那是有效的javascript代码,我重新更新了我想说的内容。@Derek:你的代码仍然没有意义。您正在创建一个对象,并调用另一个对象。再一次,如果您想附加单击处理程序,您不需要所有这些。使用
addEventListener
。我在寻找代码的抽象含义,因此body.fn()==body.onclick()