基本包裝類
js中為了便于基本型別操作,提供了3個特殊的參考型別:Boolean、Number、String它們具有基本型別特殊行為,
實際上,每當讀取一個基本型別的時候,js內部會自動創建一個基本包裝型別物件,可以讓我們呼叫一些方法來操作,
let str = 'hello 蛙人'
let str1 = str.substring(2)
上面example中,str是一個字串型別,然而它呼叫了substring方法,并將結果保存在了str1中,我們知道基本型別不是物件,我們就會想,哎 它不是物件為什么能呼叫方法,其實js內部已經實作了一系列的處理,當執行第二行代碼時,訪問程序處于一種讀取狀態,也就是要從記憶體中讀取這個字串的值,那js內部是怎么處理的呢,看下面,
- 創建String型別的實體
- 在實體上呼叫指定的方法
- 最后銷毀該實體
let str = new String('hello 蛙人')
let str1 = str.substring(2)
str1 = null
經過上面的加工后,基本字串變的跟物件一樣,上面這三個步驟也適用于Boolean、Number型別,
那么有的小伙伴就會疑惑,參考型別和基本包裝類有什么不同呢,最主要的區別就是物件的生存期,
- 參考型別:使用new運算子創建的參考型別實體,在執行流離開當前作用域之前一直都保存在記憶體中,
- 基本包裝型別:只存在一行代碼的執行瞬間,然后立即銷毀
基本包裝類意味著我們不能在運行時為物件添加屬性及方法,因為它們執行完后會立即銷毀
let str = '蛙人'
str.age = 23
console.log(str.age) // undefined
上面第二行代碼中,為“蛙人“添加 age 屬性,但是在下面列印發現是 undefined,問題就在于,第二行代碼執行完后立即銷毀,第三行代碼再次創建String物件發現沒有該age屬性,
如果覺得寫的不錯的話,那就點個贊叭!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/254412.html
標籤:其他
