JSONObject.toString

作者:快乐笛子 来源:快乐笛子博客 时间:2008-03-09 19:12:00 

Object 类型的对象虽然有 toString 方法,但结果却是 [Object Object] 让人没法理解的字符。比如简单的对象:{name:"张三",age:20,canfly:true,sayHello:function(){alert("hello!")},hasPower:["fly","selfFix","autobuilding"]},此对象的数据格式几乎涵盖了JavaScript所有常见的数据格式(字符、数字、布尔、方法、数组),如果执行该对象的toString方法能还原描述此对象的原始字符串,将能更直观地展示对象。

ok,let's go

Object.prototype.toString = function(){
 var str = "";
 for (var key in this){
  if(key=="toJSONString")continue;
  if(!this[key] || this[key]==true){
   str += ","+key+":"+this[key];
  }else if(typeof this[key]=="number"){
   str += ","+key+":"+this[key]+"";
  }else if(typeof this[key] == "string"){
   str += ","+key+":\""+this[key]+"\"";
  }else if(typeof this[key]=="function"){
   str += ","+key+":"+this[key].toString();
  }else if(typeof this[key] == "object"){  
   if(this[key].constructor == Array){
    str += ","+key+":"+this[key].toJSONString();
   }else if(this[key].constructor == Object){
    str += ","+key+":"+this[key].toString();
   }
  }
  
 }
 return "{"+str.substring(1)+"}";
}

Array.prototype.toJSONString = function(){
 var str = "";
 for (var key=0; key<this.length; key++){
  if(typeof this[key]=="number"){
   str += ","+this[key];
  }else if(typeof this[key] == "string"){
   str += ",\""+this[key]+"\"";
  }else if(!this[key] || this[key]==true){
   str += ","+this[key];
  }else if(typeof this[key]=="function"){
   str += ","+this[key].toString();
  }else if(typeof this[key] == "object"){  
   if(this[key].constructor == Array){
    str += ","+ this[key].toJSONString();
   }else if(this[key].constructor == Object){
    str += ","+this[key].toString();
   }
  }
  
 }
 return "["+str.substring(1)+"]";
}

方法很简单,处理的数据格式也仅限于上面提到的几种JavaScript内置数据格式。上面的代码有两段,但不能分拆,互相有引用。

标签:toString,Object,字符串,js
0
投稿

猜你喜欢

  • 有关Oracle数据库的备份情况

    2010-07-30 13:21:00
  • 在ASP中使用SQL语句之6:存储过程查询

    2007-08-11 12:44:00
  • Javascript操作表单之间的数据传递

    2007-10-25 12:58:00
  • 如何判断用户在某一页面逗留了多长时间?

    2010-01-18 20:48:00
  • PHP实现登录的Cookie存储方案详解

    2023-05-25 08:45:17
  • 微软证实最新的关键SQL Server漏洞

    2008-12-23 13:31:00
  • asp GetString的用法

    2008-06-12 13:46:00
  • JavaScript Table行定位效果

    2009-05-25 10:47:00
  • ajax返回中文乱码问题解决

    2009-04-13 16:07:00
  • ADO的错误码对应的含义

    2007-10-22 17:31:00
  • 不是原型继承那么简单!prototype的深度探索

    2008-03-07 12:42:00
  • ASP 包含文件中的路径问题和使用单一数据库连接文件的解决方案

    2011-04-07 10:35:00
  • MySQL 基本概念

    2011-09-10 16:22:34
  • 使用 WinHttpRequest 伪造 Referer (附实战代码)

    2010-08-24 18:28:00
  • ASP访问数量统计代码

    2011-04-08 10:59:00
  • 人性化网页设计技巧

    2007-10-15 13:02:00
  • 61条面向对象设计的经验原则

    2008-05-08 13:05:00
  • phpmyadmin 数据导入导出问题

    2007-08-06 15:23:00
  • Dreamweaver制作网页11种技巧详解

    2007-11-05 14:00:00
  • 在ASP与ASP.NET之间共享对话状态(2)

    2008-09-02 12:21:00
  • asp之家 网络编程 m.aspxhome.com