JavaScript 物件的有趣本質
在程式設計的深處,JavaScript 的世界呈現出意想不到的轉折:並非一切都是物件。雖然許多介紹性文本暗示「幾乎所有東西」都屬於這種分類,但仔細檢查會發現不同的事實。
物件的核心是透過方法和屬性封裝功能。例如,數組就適合這個模型及其固有的鍵值對。然而,當涉及到「字串」、「數字」和「函數」時,界限就變得模糊了。
這些實體可能看起來類似於函數,對輸入執行轉換並產生輸出,而無需明顯存取屬性或方法。在這種情況下,點表示法仍然明顯缺失。
包裝難題
揭開謎團,我們發現了一個微妙的區別:這些原語,正如它們所知,缺乏物體的真實本質。相反,它們被包裹在物件服裝中,即字串、數字和布林值。這些包裝器擁有方法和屬性,賦予物件行為的錯覺。
例如,考慮以下程式碼:
var s = "foo"; var sub = s.substring(1, 2); // sub becomes "o"
在幕後,JavaScript 執行一系列隱藏步驟:
屬性的幻覺
雖然它似乎基元可以分配屬性,這種嘗試被證明是徒勞的,如以下示例所示:
var s = "foo"; s.bar = "cheese"; alert(s.bar); // undefined
發生這種情況是因為該屬性是在短暫的String 包裝物件上定義的,該物件會立即被丟棄,呈現
函數:偽裝的物件
與基元不同,函數是繼承自Object 的成熟物件。這意味著它們擁有物件的所有功能,包括擁有自己的屬性的能力。看看這個例子:
function foo() {} foo.bar = "tea"; alert(foo.bar); // tea
結論
在 JavaScript 中,並不是所有東西都披著物件的外衣。由物件包裝器偽裝的原語創造了物件行為的錯覺。只有透過更深入地理解 JavaScript 的複雜性,其物件的真實本質才會變得顯而易見。
以上是JavaScript 基元真的是物件嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!