JavaScript 中的函數、字串和數字都是物件嗎?
JavaScript 將幾乎所有內容都宣告為物件的聲譽可能會令人費解,尤其是對於初學者。雖然物件及其方法和屬性確實發揮著重要作用,但字串、數字和函數等基元的行為卻有所不同。
基元值與物件
在 JavaScript 中,原始值是不可變的,無法透過點表示法存取。然而,JavaScript 提供了包裝物件(String、Number 和 Boolean),它們為基元賦予類似物件的方法和屬性。
包裝物件
包裝物件是在後面建立的存取圖元屬性時的場景。例如,在程式碼中:
var s = "foo"; var sub = s.substring(1, 2);
JavaScript 默默地建立一個 String 對象,呼叫 substring() 方法,然後丟棄該物件。 sub 變數現在包含基元字串“o”。
雖然看起來您可以將屬性分配給基元,但這些分配實際上是在立即丟棄的包裝器物件上執行的。因此,檢索此類屬性會產生未定義的結果,如下例所示:
var s = "foo"; s.bar = "cheese"; alert(s.bar); // undefined
函數作為物件
與基元不同,函數是繼承的完整物件來自物件。它們可以具有屬性,如以下程式碼所示:
function foo() {} foo.bar = "tea"; alert(foo.bar); // tea
總之,原語在 JavaScript 中並不固有地具有物件特徵。然而,包裝物件提供了類似物件行為的外觀,而函數是可以與屬性和方法互動的真正物件。這種區別對於理解 JavaScript 的類型系統和做出明智的編碼決策至關重要。
以上是函數、字串和數字實際上表現得像 JavaScript 中的物件嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!