解碼 JavaScript 物件之謎
在 JavaScript 領域,無所不在的物件經常引發問題。雖然陣列和函數表現出類似物件的行為,但揭開「字串」和「數字」的神秘本質可能會令人困惑。
原始值的難以捉摸的本質
與流行的看法相反,JavaScript 中並非所有內容都是物件。字串、數字和布林值等核心元素被歸類為基元,其特徵是不可變的性質。與真正的物件不同,基元缺乏方法和屬性。
物件性的幻覺
JavaScript 採用了一種巧妙的技巧來使基元看起來像物件。當嘗試存取原語的屬性(例如,s.substring(1, 2))時,JavaScript 會無縫建立一個擁有所需方法的包裝物件(例如,String(s))。然而,這個包裝器是短暫的,一旦方法執行完成就會消失。
證明:無法存取的屬性
當將屬性分配給基元時,這種錯覺變得明顯,最終證明是徒勞的。考慮以下程式碼:
var s = "foo"; s.bar = "cheese"; alert(s.bar); // undefined
儘管為基元 s 分配了一個屬性,但嘗試檢索它會產生未定義的結果。這是因為該屬性附加到臨時包裝對象,該對像在方法完成時被丟棄。
函數:真實物件
與基元相反,JavaScript 函數是合法對象,繼承自 Object 原型。這使它們能夠擁有屬性並執行任何基於物件的方法。
函數中的屬性分配
函數可以充當典型對象,允許屬性分配和檢索:
function foo() {} foo.bar = "tea"; alert(foo.bar); // tea
透過理解JavaScript合法對象之間的區別,我們消除了圍繞廣泛存在的混亂“幾乎一切都是對象”的觀念。
以上是JavaScript 中字串和數字真的是物件嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!