首頁 >web前端 >js教程 >JavaScript 中字串和數字真的是物件嗎?

JavaScript 中字串和數字真的是物件嗎?

Patricia Arquette
Patricia Arquette原創
2024-11-12 02:38:02752瀏覽

Are Strings and Numbers Really Objects in JavaScript?

解碼 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn