js中有一个函数eval能够一段文本改成js代码,原本使用eval也能够达到目的,但本身看了很多资料都不推荐使用eval函数,因而本身就在思考有没有不使用eval的方法?javascript
其实需求很简单,就是把一个js对象变成了文本,如今又须要把这段文本变成js对象。html
例如一段文本以下:java
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:[]}}]";
例如:jquery
var obj=eval(j2);
但又没有其余方法呢?
想了好久也没有找到方法,最终查看jquery-easyui文档受到了启发,看看人家是如何处理的。ide
想不到如此简单函数
var obj =(new Function("return "+""+j2+""))();
其实和eval区别彷佛也不大,但jquery-easyui使用了这种方式,必然有必定的道理。其实我想最好的方法,实际上是把js对象转化为JSON文本,解析时再把JSON文本转化为js对象应该更合理。
看了上面的方法,你是否是又Get到了新技能?ui
出处:https://blog.csdn.net/xuexiaodong009/article/details/39395699spa