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内置数据格式。上面的代码有两段,但不能分拆,互相有引用。


猜你喜欢
- 本主题说明如何创建支持 FILESTREAM 的数据库。由于 FILESTREAM 使用一种特殊类型的文件组,因此,在创建数据库时,必须至少
- 页面加载loading效果, 这个挺好玩的!用setTimeout实现的!可以和服务端整合弄一些生成HTML或者上传文件等应用!
- 一.打包Flask项目1.1自己写个Flask1.2 下载pyinstallerpip install pyinstaller可选参数示例说
- 请问鼠标移过去就出现二级菜单代码怎么写啊 <head><style type="tex
- 一、时间戳实际开发中,我们一般希望create_time和update_time这两个属性能自动设置,所以在建表的时候需要在model上特殊
- Geohash 是一种地址编码,它能把二维的经纬度编码成一维的字符串。比如,北海公园的编码是wx4g0ec1。Geohash 的原理、算法下
- 这里要注意的是js的时间戳是13位,php的时间戳是10位,转换函数如下: var nowtime = (new Date).getTime
- 安装jieba库教程jieba库是一款优秀的 Python 第三方中文分词库,jieba 支持三种分词模式:精确模式、全模式和搜索引擎模式,
- 一.概念简介 脚本:script是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。 二.背景 近来在Wind
- 本文主要介绍了Python3.9.0a1安装pygame出错解决全过程,分享给大家,具体如下:解决方法先说一下经验教训:pygame最后终于
- 目录查找和修复数据表冲突更新索引统计查找和修复数据表冲突数据表最糟糕的事情就是发生冲突。使用MyISAM存储引擎时,通常因为崩溃导致冲突。然
- 绘制直线图,确定x范围和y的范围代码:import matplotlib.pyplot as pltimport numpy as npxp
- 话不多说,直接开搞!练习项目一:即时标记补充utils.py:练习项目二:画幅好画练习项目三:万能的XML练习项目四:新闻聚合练习项目五:虚
- 本文实例讲述了Python装饰器。分享给大家供大家参考。具体分析如下:这是在Python学习小组上介绍的内容,现学现卖、多练习是好的学习方式
- namedtuple 就是命名的 tuple,比较像 C 语言中 struct。一般情况下的 tuple 是 (item1, item2,
- $ cat checkserver.py#!/usr/bin/python# -*- coding: utf-8 -*- impo
- 前言最近有文字转图片的需求,但是不太想下载 APP,就使用 Python Pillow 实现了一个,效果如下:PIL 提供了 PIL.Ima
- 最近了解了下repaint和reflow的相关知识,觉得在页面重构过程中就应该考虑前端开发(js)人员对dom进行操作,能够减轻客户浏览器的
- 原文地址:30 Days of Mootools 1.2 Tutorials - Day 22 - Fx.Elements通过
- 一、中间键的引入:Django中间件(Middleware)是一个 轻量级、底层的 “插件”系 统,可以介入 Django的请求和响应处理过