JavaScript學習筆記——基本包裝類型(上)Boolean、Number

爲了便於操作基本類型值,ECMAScript還提供了三個特殊的引用類型:Boolean、Number和String。這些類型與其他引用類型相似,同時也具有與各自的基本包裝類型相應的特殊行爲。實際上,每當讀取一個基本類型值時,後臺就會創建一個對應的基本包裝類型的對象,從而讓我們能夠調用一些方法來操作這些數據。

var s1 = "some text";
var s2 = s1.substring(2);

這個例子中的變量s1包含一個字符串,字符串當然是基本類型值。而下一行調用了s1的substring()方法,並將返回的結果保存在s2中。我們知道,基本類型值不是對象,因此從邏輯上講,它們不應該有方法(但是它們確實有方法)。其實,爲了讓我們實現這種直觀的操作,後臺已經自動完成了一系列的處理。當第二行代碼訪問s1時,訪問過程處於一種讀取模式,也就是從內存中讀取這個字符串的值。而在讀取模式中訪問字符串時,後臺都會自動完成下列處理:
(1)創建String類型的一個實例。
(2)在實例上調用指定方法。
(3)銷燬這個實例。

var s1 = new String("some text");
var s2 = s1.substring(2);
s1 = null;

引用類型與基本包裝類型的主要區別就是對象的生命週期。使用new操作符創建的引用類型的實例,在執行流離開當前作用域之前都一直保存在內存中。而自動創建的基本包裝類型的對象,只存在於這一行代碼的執行期(瞬間),然後立即銷燬。這就意味着我們不能在運行時爲屬性添加屬性和方法。
Boolean類型
Boolean類型是與布爾值對應的引用類型。

var falseObject = new Boolean(false);
var result = falseObject && true;//true
var falseValue = false;
result = falseValue && true;//false

該引用類型的實例會修改valueOf()和toString()方法。前者返回基本類型值true 和false;後者返回字符串”true” 和”false”。所以falseValue返回基本類型true和fasle,false && true = false;falseObject 返回字符串”true” 和”false”,true && true = true。

alert(typeof falseObject );//object
alert(typeof falseValue);//Boolean
alert(falseObject instanceof Boolean);//true
alert(falseValue instanceof Boolean);//false

typeof操作符對基本類型返回“Boolean”,對引用類型返回“object”。由於Boolean對象是Boolean類型的實例,所以使用instanceof操作符測試Boolean對象會返回true,而測試基本類型的布爾值會返回false。
Number 類型
Number類型也重寫了valueOf、toLocalString、toString方法,重寫後的valueOf返回對象表示的基本類型的數值,其他兩個方法則返回字符串形式的數值。

tostring()可以返回不同進制數值的字符串形式

var num = 10;
alert(num.toString());//"10"
alert(num.toString(2));//"1010"
alert(num.toString(8));//"12"
alert(num.toString(10));//"10"
alert(num.toString(16));//"a"

toFixed()方法會按照指定的小數位返回數值的字符串表示

var num1 = 10;
var num2 = 10.005;
alert(num1.toFixed(2));//"10.00"
alert(num2.toFixed(2));//"10.01"

toExponetial()返回一科學計數法表示的數值的字符串形式,也接受一個參數,才參數指定輸出結果中的小數位數。

var num = 10;
alert(num.toExponetial(1));//"1.0e+1"

toPrecision()方法可以返回Fixed格式,也可以返回Exponetial格式。接受一個參數,表示數值的所有數字的位數(不包括指數部分)

var num = 99;
alert(num.toPrecision(1));//"1.0e+2"
alert(num.toPrecision(2));//"99"
alert(num.toPrecision(3));//"99.0"
發佈了41 篇原創文章 · 獲贊 13 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章