我想产生一个Javascript对象,其中包含类型函数(myClickHandler示例)的属性(onClick示例),
var options = {onClick: this.myClickHandler};
我希望从字符串创建上述对象,因为每次应用程序运行时options对象都可能不同,并且希望在运行时对其进行评估。 (myClickHandler
是现有功能)。我想要从字符串创建的options对象,因为onClick属性可以是其他东西,而其功能也可以是其他东西。这些是从动态字符串确定的。
正在寻找这样的东西:
var optionsString = "{onClick: this.myClickHandler}";
var options = JSON.parse(optionsString); //won't work. For illustration only.
这自然不会起作用。理想情况下,我想一次性转换字符串,但可能需要解析它,但optionString可以包含一个或多个属性。
答案 0 :(得分:0)
尝试将eval
用作:
var myClickHandler = function(){ alert('i am evil'); };
var options = JSON.parse('{ "onClick": "this.myClickHandler" }');
//现在调用处理程序
eval(options.onClick)();
答案 1 :(得分:0)
您需要在某些上下文中绑定函数,以便可以通过键(可以是字符串)访问该函数。
let context = {};
context.myclickhandler = () => {
console.log("### It clix ####")
}
let nameOfFunction = "myclickhandler"
let obj = {"onClick" : context[nameOfFunction]};
obj["onClick"]();
在该示例中,上下文只是一个对象,但也可以是Windows对象或构造函数的实例。