首页 > Web开发 > 详细

js 将字符串当作js表达式执行方法

时间:2019-11-18 19:44:18      阅读:382      评论:0      收藏:0      [点我收藏+]

听同事说了一个需求。他有一个数据对象obj,接口会给他返回一个索引key,这个key长度不固定,根据这个key去修改obj对应的值。

举个例子:

let obj={"level1":{"level2":{"level3":100}},"level1B":{leve2:"999"}};
let key=‘level1.level2‘;
let value=‘wh‘;

现在我想修改索引key 对应的值 {"level3":100}为变量value的值 ‘wh‘.

方法一:使用eval 

            eval函数 我看了很多书 都让别用这个函数。但是它真的很强大。

eval(`obj.${key}=value`);

           监狱eval有一些作用域问题,还有一些安全性问题  听说最好别用(这个我其实没怎么用过,本着学习的态度 琢磨了一下方法二)

方法二:使用new Function() 它也可以在函数里将字符串当作js表达式执行。

new Function(‘obj‘,‘key‘,‘value‘,`obj.${key}=value`)(obj,key,value);

 

注意点:

        用模板字符串的时候 只有key需要加${} obj和value虽然也是变量 但是当作普通值处理就好了。(原因的话 我认为因key代表的是动态的属性,如果不对欢迎指正)

 

最后: 其实这个也可以写个递归函数来解决。

 

   

js 将字符串当作js表达式执行方法

原文:https://www.cnblogs.com/ada-blog/p/11884303.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!