基本包裝類

2021-09-28 01:15:04 字數 1344 閱讀 6169

在 js 中,我們經常使用操作字串的方法,比如字串的擷取,查詢某個字元片段等等。

但是,有思考過這麼乙個問題麼:在 js 中,字串屬於基本資料型別,那麼它們的方法是從**來的呢?對於基本資料型別而言,為什麼有能力呼叫方法呢?

關於這個問題的答案,就是接下來要介紹的基本包裝類。

為了更好的操作字元創,數值以及布林值,es 內建了三個對應的類,這個類就被稱為基本包裝類。

也就是說,在 js 中,有字串常量,有字串物件;有數值常量,也有數值物件!!!這麼說或許難以理解,看乙個例子:

//字串常量

let username = "jonas"

//字串物件

let _username = new string("jonas")

console.log(username === _username)//false

console.log(_username instanceof object)//true

console.log(username instanceof object)//false

從上面這個例子來看,我們平常使用的字串字面量建立的字串都是乙個常量,然而,通過 new 關鍵字來建立的字串是乙個物件。其他的兩種型別也是這麼玩的,這裡省略**了。 

但是,這還不能說明問題,因為我們平時都是直接通過引號的方式來使用字串,並且能正常的呼叫字串的方法,那麼這到底是為什麼呢?

原因在於引擎,它會在適當的時候將基本型別轉換為物件,以便使用內建的方法或屬性;也會在適當的時候將物件轉換為基本型別。在這個過程中,不需要開發者關注,整個過程由引擎來完成的。通過下面乙個例子來說明字串常量與字串物件之間的轉換:

let str = "test"//建立乙個字串

let copy = str.substring(0)

str.test = "test"//報錯

第一行**,通過字面量的方式建立了乙個字串。第二行**,str 顯然不再是是乙個基本型別了,因為它具有了呼叫方法的能力。在此之前,引擎會將字串常量 "test" 轉換為字串物件,接著就可以呼叫定義在 string.prototype 上的方法了。在呼叫結束後,引擎會將這個物件轉換為基本型別,所以也解釋了為什麼在第三行**會報錯哦。

總結:三個基本資料型別 string、number、boolean 在訪問內建的屬性或方法時,它們會被臨時轉換為乙個物件(這個物件被稱為包裝物件),在訪問或呼叫結束後,這個物件就會被銷毀。null 和 undefined 沒有包裝物件,訪問它們的屬性或方法會造成乙個錯誤。

基本型別包裝類

一 概述 1 將基本資料型別封裝成物件的好處在於可以在物件中定義更多的功能方法操作該資料。2 常用的操作之一 用於基本資料型別與字串之間的轉換。3 基本型別和包裝類的對應 byte,short,integer,long,float,double character,boolean 二 integer...

基本型別包裝類

基本資料型別的包裝類可以使用基本型別對應的類的相關成員變數和成員方法,相比於基本資料型別,包裝類更易於使用。八大基本資料型別 byte short int long float double char boolean 對應的包裝類 byte short integer long float doub...

基本型別包裝類

基本型別和包裝類的對應 byte byte short short int integer long long float float double double char character boolean boolean integer類在物件中包裝了乙個基本型別int的值。integer型別的...