簡體   English   中英

MDN為什么說“ JavaScript中的一切都是對象”?

[英]Why does MDN say “everything is an object in JavaScript”?

在有關字符串方法的MDN頁面上( https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Useful_string_methods ),其上顯示“我們之前已經說過,我們將再說一遍— 一切都是JavaScript中的對象。” 但是另一個MDN頁面指出,JavaScript中有7種數據類型,6種原語和對象( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Data_types )。 這只是一個錯誤,對嗎? 還是我想念的東西?

我的術語可能不正確,我不是要注意這些細節的人,但這也許可以幫助您澄清一下。

例如,數字變量具有toExponential方法。 例如,這是無效的3.toExponential(2) ,但這是完全有效的, let a = 3; a.toExponential(2); let a = 3; a.toExponential(2); 另一方面, typeof 3typeof a返回字符串'number'

因此,什么是“對象”(大致上可以有方法)和變量或文字可以引用的數據類型之間是有區別的。

我認為這是措辭不佳的選擇。 通過引用傳遞的東西是對象(數組或普通對象,函數等)。 原始數據類型通過值傳遞,我認為null為關鍵字(它也是一個對象)。 正確的短語是:

“一切都可以表示為對象”

就像其他人指出的那樣,這將消除誤解,從Number.prototype或String.prototype調用函數的唯一方法是引擎隱式將原語包裝為對象。 同樣,您可以執行此操作(function(){console.log(this)}).call(5) //Number {5}

每個數據類型都是它自己的類的實例。 例如字符串。 任何字符串都是String類的實例,所有實例均從String類繼承方法。 方法僅對對象可用,因此您可以認為該字符串是對象。 但是為了節制,所有數據類型都存在。

我試圖解釋這個概念,但是它很復雜

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM