惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

博客园 - Amwpfiqvy

如何查看执行计划 SQL Server 堆表与栈表的对比(大表) SQL Server中CURD语句的锁流程分析 树表分级统计 SQL:查询购买了所有指定商品的人 在SQL Server中使用正则表达式 查看SQL Server性能时常用的性能计数器 SQL Server中行列转换 Pivot UnPivot Apq本地工具集 Apq.aspx 第一个:_Config.js JScript.Encode.js - Amwpfiqvy - 博客园 Apq.Threading.js - Amwpfiqvy - 博客园 Script/_Config.js Apq.Text.js Apq.js - Amwpfiqvy - 博客园 prototype.js Apq.aspx - Amwpfiqvy - 博客园 查看数据库所有用户表及其列信息
利用JScript的Literal Syntax特性用字符串表示对象
Amwpfiqvy · 2006-04-04 · via 博客园 - Amwpfiqvy

这里说的是JScript对象的字符串表示实现,利用的就是其Literal Syntax特性。
为了统一,我采用方法名为:toJSON,默认实现为无参数(如果你愿意,也可以写点参数的,),意思简单,话就不多说了,看代码:

    /// toJSON --------------------------------------------------------------------------------------------------------------------------------
    /// 用字符串表示对象
    Apq.toJSON = function( o ) {
        
var strClassName = Apq.getClassName( o ).toLowerCase();
        
if( strClassName == "undefined" || strClassName == "null" )
        
{
            
return strClassName;
        }

        
if( strClassName == "system.xml.xmldocument" || strClassName == "system.xml.xmlnode" )
        
{
            
// Xml 相关类
            return o.xml;
        }

        
var args = Function.Args2Ary( arguments, 1 );
        
return o.toJSON.apply( o, args );
    }
;
    
    
/// Object
    Object.prototype.toJSON = function(){
        
return "{}";
    }
;
    
    
/// Array
    Array.prototype.toJSON = function(){
        
var a = [];
        
forvar i = 0; i < this.length; i++ )
        
{
            a.push( Apq.toJSON(
this[i]) );
        }

        
return "" + a.join( "" ) + " ]";
    }
;
    
    Boolean.prototype.toJSON 
= function(){
        
return this.toString.apply( this, arguments );
    }
;
    
    Number.prototype.toJSON 
= function(){
        
if( isFinite( this ) )
        
{
            
return this.toString();
        }

        
else if( isNaN( this ) )
        
{
            
return "NaN";
        }

        
else
        
{
            
return "Number." + (this > 0 ? "POSITIVE_INFINITY" : "NEGATIVE_INFINITY");
        }

    }
;
    
    String.prototype.toJSON 
= function(){
        
var s = this.replace( /(["\\])/g, '\\$1' );
        s = s.replace( /\n/g, 
"\\n" );
        s = s.replace( /\r/g, 
"\\r" );
        return '
"+ s + '"';
    };
    Error.prototype.toJSON = function(){
        return 
"{ number: " + this.number + ", name: " + this.name + ", message: " + this.message + " }";
    };
    RegExp.prototype.toJSON = function(){
        return this.toString.apply( this, arguments );
    };

这里的Apq只是一个普通对象(即new Object() || {}),自己添加下就行了。
Apq.toJSON()只是提供一个统一的调用接口,具体实现则由各自的类负责。
Object.prototype.toJSON()提供一个默认实现,一般不实用(想不出好办法,凑合一下)。
其余是常用类型我已实现的部分,仅供参考。