• 利用JScript的Literal Syntax特性用字符串表示对象


    这里说的是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()提供一个默认实现,一般不实用(想不出好办法,凑合一下)。
    其余是常用类型我已实现的部分,仅供参考。
  • 相关阅读:
    易优CMS:compare的基础用法
    易优CMS:switch的基础用法
    2019年创意可爱卡通小清新教育课件培训PPT模板
    简约清新立体商务年终工作总结汇报动态PPT模板
    中国古风唯美水墨工作计划汇报PPT模板推荐
    新学期教育教学小学家长会PPT模板推荐
    遇见手绘花卉小清新简约通用PPT模板推荐
    简约清新日系你好五月通用PPT模板推荐
    清新简约风格毕业论文答辩PPT模板推荐
    C# 中=>符号的使用
  • 原文地址:https://www.cnblogs.com/Apq/p/366962.html
Copyright © 2020-2023  润新知