zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    CF1276F
    CF1082F
    CF1366G
    CF1221G
    CentOS7统计某个进程当前的线程数
    centos7备份系统日志
    mysql删除带外键约束的表的方法
    django.db.models.query.QuerySet格式的数据输出
    Linux命令大全
    django创建多对多表三种方法,和ORM操作增删改查
  • 原文地址:https://www.cnblogs.com/mq0036/p/9414384.html
Copyright © 2011-2022 走看看