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

本文介绍了一种将JScript对象转换为其字符串表示的方法,并提供了针对不同内置类型的实现示例。
这里说的是JScript对象的字符串表示实现,利用的就是其Literal Syntax特性。
为了统一,我采用方法名为:toJSON,默认实现为无参数(如果你愿意,也可以写点参数的, 14.gif),意思简单,话就不多说了,看代码:
None.gif      // / toJSON --------------------------------------------------------------------------------------------------------------------------------
None.gif
     // / 用字符串表示对象
ExpandedBlockStart.gifContractedBlock.gif
    Apq.toJSON  =   function ( o )  dot.gif {
InBlock.gif        
var strClassName = Apq.getClassName( o ).toLowerCase();
InBlock.gif        
if( strClassName == "undefined" || strClassName == "null" )
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
return strClassName;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
if( strClassName == "system.xml.xmldocument" || strClassName == "system.xml.xmlnode" )
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
// Xml 相关类
InBlock.gif
            return o.xml;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
var args = Function.Args2Ary( arguments, 1 );
InBlock.gif        
return o.toJSON.apply( o, args );
ExpandedBlockEnd.gif    }
;
None.gif    
None.gif    
// / Object
ExpandedBlockStart.gifContractedBlock.gif
    Object.prototype.toJSON  =   function () dot.gif {
InBlock.gif        
return "{}";
ExpandedBlockEnd.gif    }
;
None.gif    
None.gif    
// / Array
ExpandedBlockStart.gifContractedBlock.gif
    Array.prototype.toJSON  =   function () dot.gif {
InBlock.gif        
var a = [];
InBlock.gif        
forvar i = 0; i < this.length; i++ )
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            a.push( Apq.toJSON(
this[i]) );
ExpandedSubBlockEnd.gif        }

InBlock.gif        
return "" + a.join( "" ) + " ]";
ExpandedBlockEnd.gif    }
;
None.gif    
ExpandedBlockStart.gifContractedBlock.gif    Boolean.prototype.toJSON 
=   function () dot.gif {
InBlock.gif        
return this.toString.apply( this, arguments );
ExpandedBlockEnd.gif    }
;
None.gif    
ExpandedBlockStart.gifContractedBlock.gif    Number.prototype.toJSON 
=   function () dot.gif {
InBlock.gif        
if( isFinite( this ) )
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
return this.toString();
ExpandedSubBlockEnd.gif        }

InBlock.gif        
else if( isNaN( this ) )
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
return "NaN";
ExpandedSubBlockEnd.gif        }

InBlock.gif        
else
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
return "Number." + (this > 0 ? "POSITIVE_INFINITY" : "NEGATIVE_INFINITY");
ExpandedSubBlockEnd.gif        }

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

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

转载于:https://www.cnblogs.com/Apq/archive/2006/04/04/366962.html

带开环升压转换器和逆变器的太阳能光伏系统 太阳能光伏系统驱动开环升压转换器和SPWM逆变器提供波形稳定、设计简单的交流电的模型 Simulink模型展示了一个完整的基于太阳能光伏的直流到交流电力转换系统,该系统由简单、透明、易于理解的模块构建而成。该系统从配置为提供真实直流输出电压的光伏阵列开始,然后由开环DC-DC升压转换器进行处理。升压转换器将光伏电压提高到适合为单相全桥逆变器供电的稳定直流链路电平。 逆变器使用正弦PWM(SPWM)开关来产生干净的交流输出波形,使该模型成为研究直流-交流转换基本操作的理想选择。该设计避免了闭环和MPPT的复杂性,使用户能够专注于光伏接口、升压转换和逆变器开关的核心概念。 此模型包含的主要功能: •太阳能光伏阵列在标准条件下产生~200V电压 •具有固定占空比操作的开环升压转换器 •直流链路电容器,用于平滑和稳定转换器输出 •单相全桥SPWM逆变器 •交流负载,用于观察实际输出行为 •显示光伏电压、升压输出、直流链路电压、逆变器交流波形和负载电流的组织良好的范围 •完全可编辑的结构,适合分析、实验和扩展 该模型旨在为太阳能直流-交流转换提供一个干净高效的仿真框架。布局简单明了,允许用户快速了解信号流,检查各个阶段,并根据需要修改参数。 系统架构有意保持模块化,因此可以轻松扩展,例如通过添加MPPT、动态负载行为、闭环升压控制或并网逆变器概念。该模型为进一步开发或整合到更大的可再生能源模拟中奠定了坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值