js中的eval函数另一种实现
js中有一个函数eval可以一段文本改为js代码,本来使用eval也可以达到目的,但自己看了不少资料都不推荐使用eval函数,于是自己就在思考有没有不使用eval的方法?
其实需求很简单,就是把一个js对象变成了文本,现在又需要把这段文本变成js对象。
例如一段文本如下:
var j2="[{value:'xuanzhong',Selectd:{ShowIds:['div_9144','div_9147'],HideIds:['div_9156','div_9162'],EnableIds:['div_9156','div_9162'],UnEnableIds:['div_9156','div_9162']},UnSelectd:{ShowIds:[],HideIds:[],EnableIds:[],UnEnableIds:[]}}]";
如何把它变成一个js对象
-
var obj={};
-
obj.Value="xuanzhong";
-
obj.Selectd={};
-
obj.Selectd.ShowIds=['div_9144','div_9147';
-
obj.Selectd.HideIds=['div_9156','div_9162'];
-
obj.Selectd.EnableIds=['div_9156','div_9162'];
-
obj.Selectd.UnEnableIds=['div_9156','div_9162'];
-
obj.UnSelectd={};
-
obj.UnSelectd.ShowIds=[];
-
obj.UnSelectd.HideIds=[];
-
obj.UnSelectd.EnableIds=[];
-
obj.UnSelectd.UnEnableIds=[];
使用eval函数很容易办到
例如:
var obj=eval(j2);
但又没有其他方法呢?
想了很久也没有找到方法,最终查看jquery-easyui文档受到了启发,看看人家是如何处理的。
想不到如此简单
var obj =(new Function("return "+""+j2+""))();
其实和eval区别似乎也不大,但jquery-easyui使用了这种方式,必然有一定的道理。其实我想最好的方法,其实是把js对象转化为JSON文本,解析时再把JSON文本转化为js对象应该更合理。看了上面的方法,你是不是又Get到了新技能?
出处:https://blog.csdn.net/xuexiaodong009/article/details/39395699
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/9414384.html
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!
posted on 2018-08-03 15:28 jack_Meng 阅读(5932) 评论(0) 编辑 收藏 举报