基本資料型別的包裝物件

2021-08-27 07:37:14 字數 1480 閱讀 2285

首先,請給出下列**的輸出:

var  s =

"hello world"

;string.prototype.typeof

=function()

console.log

(typeof

(s))

;//(1)

console.log

(typeof

string

(s))

;//(2)

console.log

(typeof

newstring

(s))

;//(3)

s.typeof()

;//(4)

我們可以得到輸出為:

string

string

object

object

js可以很靈活地將一種型別的值轉換成另一種型別。

當我們在物件環境中使用字串時(即s.typeof()),js會為這個字串值內部地建立乙個string包裝類。string物件就代替了原始的字串值,從而可以呼叫typeof方法。

(對其它基本型別的值同樣可以這樣呼叫)

但是要注意,當我們在物件環境中使用字串時,被建立的string物件只不過是

瞬時存在

的,它使得我們可以訪問屬性和方法,此後它就沒有用了,所以系統會自動丟序它。如上執行(4)時,乙個string物件被建立了,它是瞬時存在的,使我們能訪問typeof方法,之後它被丟棄。原始的值s並不會改變。

如果想要在程式中顯式建立使用string物件,那麼需要建立乙個非瞬時的物件,即不能自動被系統丟棄的物件。string物件的建立和其他物件一樣,都使用new運算來建立:

//(3)

var s =

newstring

("hello world"

);

需注意的是,建立了string物件s後,除了typeof s返回物件外,其它情況我們基本上無法區分字串和string物件1)

只需記住:只要有必要,字串都會被轉換成string物件;同時當我們在一處需要字串值的地方使用string物件時,js會自動通過呼叫tostring()方法來將其瞬時轉化成字串值。2)

以上討論同樣適用於數字,布林值及其相應的number物件,boolean物件。

額外說明上例**中:

//(2)

var ns =

string

("hello world");

// 使用tostring也可達到相同目的

string()可以將值顯式地轉化成字串。 1)

eval()方法對待字會符串值和string物件是不同的,若無意傳遞給它乙個string物件而不是乙個基本的字串值,它可能無法像預期的那樣工作。 2)

這裡需要深入研究js直譯器究竟是如何實現自動轉換string物件和字串值

基本資料型別物件包裝類

基本資料型別物件包裝類 基本資料型別 引用資料型別 byte byte short short int integer long long float float double double char characher boolean boolean 基本資料型別物件包裝類最常見作用 就是用於基本...

基本資料型別物件包裝類

基本資料型別物件包裝類 byte byte short short int integer long long boolean boolean float float double double char charcter 基本資料型別物件包裝類的最常見作用 就是用於基本資料型別和字串之間的做轉換 ...

基本資料型別物件包裝類

1 基本資料型別對應物件 byte byte short short intinteger long long boolean boolean float float double double char character 2 基本資料型別物件包裝類常見作用 用於基本資料型別和字串型別之間做轉換。...