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内置数据格式。上面的代码有两段,但不能分拆,互相有引用。
猜你喜欢
- gchart:基于google图表API的jquery组件全攻略——入门gchart是基于google图表API的jquery组件。使用gc
- 即使在不太复杂的样式表中,也可能会有两个或者更多个规则找到同一元素。CSS通过一个叫做层叠(cascade)的过程处理这种冲突。
- ------谁正在访问数据库?Select c.sid, c.serial#,c.username,a.object_id,b.
- 语法: text-overflow : clip | ellipsis 参数: clip : 不显示省略标记(...),而是简单的裁切 el
- 今天在网上找了一下Microsoft Enterprise Library 5.0 如何集成MySQL数据库, 结果只找到了entlib 4
- 个人总结了在开发css框架中的一点经验,献丑了。希望大家的讨论能使我们共同进步。:)1、css框架中国的互联网行业已经发展了10年,浏览器也
- 如果需要在查询语句返回的列中包含一列表示该条记录在整个结果集中的行号, ISO SQL:2003 标准提出的方法是提供 ROW_NUMBER
- 【代码示例】 [code=SQL] DELIMITER $$ DROP FU
- 在IE进行文档链接时,如果遇到OLE支持的文档,IE会自动调用相应程序打开它,有时候这种功能并不是我们所需的,虽然我们可以提醒用户用鼠标右键
- 你可以通过自定义函数接口 (UDF)来添加函数。自定义函数被编译为目标文件,然后用CREATE FUNCTION 和DROP FUNCTIO
- 在SQL Server数据库中,主要是通过角色来继承相关的权限。但是,这个权限继承很容易造成权限上的冲突。如现在有个销售员账户SALE1,有
- 自动弹出窗口是一个让人讨厌的事情,为什么我们用它来显示我们的调查表呢?用弹出窗口来显示调查表,被认为是达到我们收集访问用户信息的最方便快捷的
- 如何用METADATA替换ADOVBS.INC? 在ASP中,使用组件时,如ADO,得先包含
- 如何在页面中对不同的数据进行相同的处理?selectId.asp' 列出所有客户的客户名称<html><
- 这个是今年年初写的一篇,拿出来温习下。指针让程序结构变得混乱,也让程序执行效率提高,因此在oo的语言中不提倡指针的使用,使得程序结构清晰易读
- 参数Parameters解析响应时间resolveTimeout 数据类型:长整型。简单地说就是程序对目标主机的名字解析解析的一个过程时间。
- 学习一些你已经知道的知识也没有什么坏处,是吧?我知道这可能并不一定非常有意义,但是很多时候我们往往知其然而不知其所以然,这会使得事情出现惊人
- ASP+Access数据库的18条安全法则:1.首先,我们需要过滤所有客户端提交的内容,其中包括?id=N一类,另外还有提交的html代码中
- 1.新建一个vs2003的web工程,取名为XMLTest &nbs
- 在工作之余抽了点时间写了一下这个,在ie6-ie7-ff下显示位置基本都一致了。(发现demo页面用栅格线做背景,调试还真的容易得多 。热力