JS 将变量 转化为字符串的方法, 适用于所有类型,数组, JSON对象,函数和基本类型等

在JS中, 要将JSON对象,数组或其他类型数据转化为字符串, 可以使用JSON.stringify,但由于此方法只支持部分浏览器, 搜搜其他的类库代码又太多,不如花点时间自己写个。

  

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. Object.prototype.toString1 = function(){  
  2.     switch(typeof this.valueOf()){  
  3.         case "string":  
  4.             return '"'+this.valueOf().replace(/\"/g,'\\"')+'"';  
  5.         case  "object":  
  6.             if(this.valueOf() instanceof  Array){  
  7.                 var returns = [];  
  8.                 for(var i = 0,n=this.valueOf().length;i<n;i++){  
  9.                     returns.push(this.valueOf()[i].toString1())  
  10.                 }  
  11.                 return "["+returns.join()+"]";  
  12.             }else{  
  13.                 var returns = [];  
  14.                 for(var i in this.valueOf()){  
  15.                     if(this.valueOf().hasOwnProperty(i)){  
  16.                         returns.push( i+":"+this.valueOf()[i].toString1()   )  
  17.                     }  
  18.                 }  
  19.                 return "{"+returns.join(";")+"}";  
  20.             }  
  21.         default:  
  22.             return this;  
  23.   
  24.     }  
  25. };  
  26. var a = {"a":"aa","b":[1,2,{"c":"c"}],"d":function(){alert(b)}};  
  27. console.log( a.toString1() );  

      此方法采用原型链的方式,会影响所有的对象,可以再将此方法改造一下,改成函数的调用方式。

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. function stringify(obj){  
  2.       switch(typeof obj){  
  3.         case "string":  
  4.             return '"'+obj.replace(/\"/g,'\\"')+'"';  
  5.         case  "object":  
  6.             if(obj instanceof  Array){  
  7.                 var returns = [];  
  8.                 for(var i = 0,n=obj.length;i<n;i++){  
  9.                     returns.push(arguments.callee(obj[i]));  
  10.                 }  
  11.                 return "["+returns.join()+"]";  
  12.             }else{  
  13.                 var returns = [];  
  14.                 for(var i in obj){  
  15.                     if(obj.hasOwnProperty(i)){  
  16.                         returns.push( i+":"+arguments.callee(obj[i]));  
  17.                     }  
  18.                 }  
  19.                 return "{"+returns.join(";")+"}";  
  20.             }  
  21.         default:  
  22.             return obj;  
  23.     }  
  24. }  
  25. var a = {"a":"aa","b":[1,2,{"c":"c"}],"d":function(){alert(b)}};  
  26. console.log( stringify(a) );  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值