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

posted on   jack_Meng  阅读(5936)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2017-08-03 架构设计 ---- 系列文章
2017-08-03 也谈TDD,以及三层架构、设计模式、ORM……没有免费的午餐,选择了,必付出代价
2017-08-03 开源的UML建模工具
2017-08-03 思维导图工具

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏

主题色彩