有字符串如:"Name=1231||||Sex=男"
试图转化为对象实现如下的数据访问:
var obj=new Instance("Name=1231||||Sex=男");
alert(obj.Name);
alert(obj.Sex);
现在代码如下,但是存在很多问题,请问如何实现这个功能,谢谢。
function Instance(str)
{    
      var obj=new Object();      
       var arry=str.split("||||");    
            for(var o in arry)
            {
                var cha =o.split("=");
                obj.eval(cha[0])=cha[1];        
            }
        } 
        return obj;    
}

解决方案 »

  1.   

    <script>
    var obj=new Instance("Name=1231||||Sex=男");
    alert("Name====>"+obj.Name);
    alert("Sex=====>"+obj.Sex);function Instance(str){          
    var arry=str.split("||||");    
    for(var i=0;i<arry.length;i++){
    var cha =arry[i].split("=");
    eval("this."+cha[0]+"='"+cha[1]+"'");      
    }  
    }
    </script>
      

  2.   

    function wr(){
        var a = arguments;
        for(var i=0,l=a.length;i<l;i++)
            document.write(a[i]);
    }
    var str = "Name=1231||||Sex=男";String.prototype.toObject = function(){
        var ar = this.split(/\|/);
        var o = {};
        for(var i=0,l=ar.length;i<l;i++){
            var a = ar[i].split("=");
            o[a[0]] = a[1];
        }
        return o;
    }var obj = str.toObject();
    for(var p in obj)
        wr(p,":",obj[p],"<br>");
      

  3.   

    我给个好玩的方法:D<script type="text/javascript">
    var Instance = function (s) {
    s = s.replace(/([\$\w]+)=(.*?)(?:\|\|\|\||$)/g, "this.$1='$2',");
    s = s.slice(0, s.length - 1);
    eval("(function () {" + s + "}).call(this)");
    };
    var obj = new Instance("Name=1231||||Sex=男");
    alert(obj.Name);
    alert(obj.Sex);
    </script>
      

  4.   

    <script type="text/javascript">
    String.prototype.getQueryString = function(name)
    {
      var reg = new RegExp("(^|&|\\?)"+name+"=([^&]*)(&|$)"), r;
      if (r=this.match(reg)) return unescape(r[2]); return null;
    };
    var obj="Name=1231||||Sex=男".replace(/\|/g,"&");
    alert("Name====>"+obj.getQueryString("Name"));
    alert("Sex=====>"+obj.getQueryString("Sex"));
    </script>
      

  5.   

    感觉还是 浪尖赏花 的代码比较好,不过有一句代码可以改一下:
        //eval("this."+cha[0]+"='"+cha[1]+"'");
        this[cha[0]] = cha[1];
      

  6.   

    {
      [
         {     }
      ]
    }eval() 即可!