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对象

 

 

  1.  
    var obj={};
  2.  
    obj.Value= "xuanzhong";
  3.  
    obj.Selectd={};
  4.  
    obj.Selectd.ShowIds=[ 'div_9144', 'div_9147';
  5.  
    obj.Selectd.HideIds=[ 'div_9156', 'div_9162'];
  6.  
    obj.Selectd.EnableIds=[ 'div_9156', 'div_9162'];
  7.  
    obj.Selectd.UnEnableIds=[ 'div_9156', 'div_9162'];
  8.  
    obj.UnSelectd={};
  9.  
    obj.UnSelectd.ShowIds=[];
  10.  
    obj.UnSelectd.HideIds=[];
  11.  
    obj.UnSelectd.EnableIds=[];
  12.  
    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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM