国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

JScript中值類型的封箱與拆箱

2024-04-27 13:55:17
字體:
供稿:網(wǎng)友

JScript中對象的expando屬性是對Object,Array等引用類型增加成員的一種重要手段,但這種手段在對值類型時就不行了,比如
var str = "string1";
str.method1 = function(){
//do something
};

str.method1();//這里將出錯,錯誤信息(我忘記了)是說str不存在該方法

這樣的語句就會運行不了,而在C#編程中值類型存在裝箱與拆箱操作來將其轉(zhuǎn)換為引用類型,對此,JScript中也存在值類型,我們也可以做個類似操作,其實現(xiàn)如下,其中toJSON()的操作見這里,其作用是將對象(泛指)用字符串表示出來,以便使用eval函數(shù)還原該對象。
Boolean.PRototype.box = function(){
    return new Boolean( this );
};
Number.prototype.box = function(){
    return new Number( this );
};
String.prototype.box = function(){
    return new String( this );
};
Boolean.prototype.unbox = function(){
    return eval( this.toJSON() );
};
Number.prototype.unbox = function(){
    return eval( this.toJSON() );
};
String.prototype.unbox = function(){
    return eval( this.toJSON() );
};box即為裝箱,unbox即為拆箱。測試代碼如下:
str = true.box();
alert( str );
str = str.unbox();
alert( str );至此,我們JScript也有了裝箱操作,這有什么好處呢?再看看開頭那段語句吧,此時我們就可以像對待Object一樣對待String,Boolean,Number這三種值類型,就可以在運行時為值類型的變量增加expando屬性,這樣是不是很方便呢?
而拆箱操作也很簡單,只需要調(diào)用類似str.unbox()就搞定。

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 怀仁县| 广元市| 连江县| 泸州市| 香格里拉县| 武穴市| 横山县| 焦作市| 松桃| 迁西县| 连城县| 金阳县| 黔江区| 西藏| 正宁县| 双柏县| 资源县| 贵州省| 即墨市| 长沙市| 高安市| 梁山县| 泸水县| 福建省| 铜陵市| 喜德县| 定兴县| 北京市| 仁怀市| 阜宁县| 浑源县| 雅安市| 工布江达县| 孙吴县| 嘉禾县| 新晃| 班戈县| 尚志市| 阜宁县| 平山县| 黑河市|