![](/img/trans.png)
[英]JavaScript: Convert string and concatenate it to dynamically create an object property reference
[英]How to convert a string to a Javascript object with a property and a function reference?
我想产生一个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可以包含一个或多个属性。
尝试将eval
用作:
var myClickHandler = function(){ alert('i am evil'); };
var options = JSON.parse('{ "onClick": "this.myClickHandler" }');
//立即调用处理程序
eval(options.onClick)();
您需要函数绑定到的某些上下文,以便可以通过键(可以是字符串)访问该函数。
let context = {}; context.myclickhandler = () => { console.log("### It clix ####") } let nameOfFunction = "myclickhandler" let obj = {"onClick" : context[nameOfFunction]}; obj["onClick"]();
在示例中,上下文只是一个object,但也可以是windows对象或构造函数的实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.