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