DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> JScript中值類型的封箱與拆箱
JScript中值類型的封箱與拆箱
編輯:關於JavaScript     

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

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

這樣的語句就會運行不了,而在C#編程中值類型存在裝箱與拆箱操作來將其轉換為引用類型,對此,JScript中也存在值類型,我們也可以做個類似操作,其實現如下,其中toJSON()的操作見這裡,其作用是將對象(泛指)用字符串表示出來,以便使用eval函數還原該對象。
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屬性,這樣是不是很方便呢?
而拆箱操作也很簡單,只需要調用類似str.unbox()就搞定。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved