JavaScript的引用類型(五)--基本包裝類型

ECMAScript提供了三個特殊的引用類型:Boolean、Number和String。

String類型==> var stringObject = new String("hello world");

Booleab類型==>?var booleanObject = new Boolean(true);

Number類型==>?var numberObject = ?new Number(10);

注!!! 加new 創(chuàng)建的是對象object,不加new創(chuàng)建的是基本類型。

例子:(下述方法三個步驟同樣適用于Boolean和Nunber類型對應的布爾值和數(shù)字值)

var s1 = "some text";

var s2 = s1.substring(2); ?//后臺對這行代碼自動進行了一系列的處理,從而使其具有對象的方法

后臺自動完成的處理:

step1:創(chuàng)建String類型的一個實例 ?==>var s1 = new String("some text");

step2:在實力上調(diào)用指定的方法 ?==>var s2 = s1.substring(2);

step3:銷毀這個實例 ?==>s1 = null;

注!?。?/div>

注:使用new調(diào)用基本包裝類型的構(gòu)造函數(shù),與直接調(diào)用同名的轉(zhuǎn)型函數(shù)是不一樣的。

變量number中保存的是基本類型的值25;而變量obj中保存的是number的實例。


這個故事告訴我們:雖然表面輸出來的值是“基本變量”25,但其實際卻不一定是基本變量number而是引用類型對象object
此處是基本類型number

Boolean類型:(永遠不要使用Boolean對象!?。。?/p>

這就是不建議用new Boolean()創(chuàng)建對象的的原因
去除new 即正常

Number類型:(仍然不建議直接實例化Number類型,而原因與顯示創(chuàng)建Boolean對象一樣)

方法:toString() ?toFixed() ?toExponential() ?toPrecision()(這三個方法都可以通過向上或向下舍入,做到以最準確的形式來表示帶有正確小數(shù)位的值)

==>toString()方法傳遞一個表示基數(shù)的參數(shù),告訴它返回幾進制的字符串形式

==>toFixed()按照指定的小數(shù)位返回數(shù)值的字符串表示

標準現(xiàn)實范圍:其可以帶0到20個小數(shù)位
如果數(shù)值本身包含的小數(shù)位比指定的還多,那么接近指定的最大小數(shù)位的值就會舍入

==>toExponential()返回以指數(shù)表示法(也稱e表示法)表示的數(shù)值的字符串形式。

該方法可以接收一個參數(shù),參數(shù)表示指定輸出結(jié)果中的小數(shù)位數(shù)

==>toPrecision()是上述二者方法的綜合體,即可以根據(jù)要處理的數(shù)值決定到底是調(diào)用toFixed()還是調(diào)用toExponential()方法

輸出結(jié)果如下:
注意!!!上述toPrecision()因為無法準確地表示99,所以將它向上舍入為100

String類型:

屬性:length ?(用于表示字符串中包含多少個字符)

方法:charAt() ?charCodeAt() ?concat() ?slice() ?substr() ?subString() ?indexOf() ?lastIndexOf() ?trim() ?toLowerCase() ?toLocalLowerCase() ? toUpperCase() ?toLocalUpperCase() ?match() ?search() ?replace() ?split() ?localCompare() ?fromCharCode()

==》字符方法:

==>charAt()以單字符字符串的形式返回給定位置的那個字符

==>charCodeAt()同上一樣,但其獲取的是該單字符的字符編碼

也可以用方括號加數(shù)字索引來訪問字符串中的特定字符

==》字符串操作方法:

==>concat()用于將一個或多個字符串拼接起來,返回拼接得到的新字符串(其可以接收任意多個參數(shù))

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

在實踐中,使用更多的還是加好操作符(+)!!!

==>slice()、substr()、subString()三者在大多數(shù)情況下的結(jié)果都是相同的,但當傳遞的參數(shù)是負值情況下,它們的行為就不盡相同了!!!

參數(shù)為正數(shù)(左開右閉區(qū)間)
參數(shù)為負數(shù)
當?shù)诙€參數(shù)是負值,這三個方法的行為就各不相同了

==》字符串位置方法:兩個方法都是從一個字符串中搜索給定的子字符串,然后返回子字符串的位置(如果該子字符串不存在,則返回-1),下述二者只是搜索的方向不同

==>indexOf()(方向從左到右)

==>lastIndexOf()(方向從右到做)

一個參數(shù)
兩個參數(shù)
匹配字符串中所有的子字符串

==》trim()方法創(chuàng)建一個字符串副本,刪除前置及后綴的所有空格,然后返回結(jié)果。

這個方法大有用處!!!

==》字符串大小寫轉(zhuǎn)換方法

==>toLowerCase()?

==>toLocalLowerCase()

==>toUpperCase()?

==>toLocalUpperCase() ?

一般來說,在不知道自己的代碼將在哪種語言環(huán)境中運行的情況下,還是使用針對地區(qū)的方法更穩(wěn)妥一些

==》字符串的模式匹配方法:

==>match() ?在字符串上調(diào)用這個方法,本質(zhì)上與調(diào)用RegExp的exec()方法相同。(其只接受一個參數(shù):要么是一個正則表達式,要么是一個RegExp對象)

==>search() ?與match()方法的參數(shù)相同,其返回的是字符串中第一個匹配項的索引

'at'在字符串中第一次出現(xiàn)的位置是1

==>replace() ?

這個方法接兩個參數(shù):第一個參數(shù)可以是一個RegExp對象或者一個字符串(這個字符串不會被轉(zhuǎn)換成正則表達式),第二個參數(shù)可以是一個字符串或者一個函數(shù)

如果第一個參數(shù)是字符串,那么只會替換第一個子字符串。要想替換所有子字符串,唯一的方法就是提供一個正則表達式,而且要指定全局(g)標志

如果第二個參數(shù)是一個函數(shù):在只有一個匹配項(即與模式匹配的字符串》的情況下,會向這個函數(shù)傳遞3個參數(shù):模式的匹配項、模式匹配項在字符串中的位置原始字符串。

==>split() 這個方法可以給予指定的分隔符將一個字符串分割成多個子字符串,并將結(jié)果放在一個數(shù)組中。分隔符可以是字符串,也可以是一個RegExp對象(這個方法不會將字符串看成正則表達式)

接受可選的第二個參數(shù),與指定數(shù)組的大小,以便確保返回的數(shù)組不會超過既定大小
什么鬼???

==》localCompare() 方法用于比較兩個字符串誰在字母表中的先后順序

==》fromCharCode()方法接收一或多個字符編碼,然后將它們轉(zhuǎn)換成一個字符串。(相當于charCodeAt()方法的相反操作)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容