JavaScript 02

JavaScript 02

Primitive wrapper

let myName = 'Denny';
let nameLength = myName.length;
let result = myName.includes("enn");
console.log(nameLength); // 5
console.log(result); // true

在上述程式碼中,為何基本型別可以像物件一樣可以有 method 及 property?

首先,JS 會先暫時將該基本型別轉換成相對應的物件實例,因此可以呼叫該物件的方法或屬性,而該實例只會存在於那一行程式碼執行的當下,呼叫完畢並回傳之後就馬上刪除該實例。

所以上述程式碼可以視為:

let myName = 'Denny';
let tmp = new String(myName); // 暫時建立一個物件出來
let nameLength = tmp.length; // 呼叫該物件實例的屬性並回傳結果
tmp = null; // 馬上刪除
console.log(nameLength); // Script

Reference