簡體   English   中英

Javascript對象繼承未顯示預期結果

[英]Javascript object inheritance not showing expected result

我曾經認為兩個賦值a = "foo"a = new String('foo')是相同的東西。 但是使用前一個聲明, console.log(a instanceof Object)console.log(a instanceof String)返回false ,而它返回后者的預期true

由於兩個原因,這似乎很奇怪。 首先,即使使用正常的聲明a = 'foo' ,所有字符串方法都會對它起作用,這表明它繼承自String對象。 其次, a.constructor返回String

誰能解釋一下發生了什么?

"foo"是一個原始的字面意思。

但是new String("foo")是String類的一個實例。

您可以在原始值上調用方法,因為

JavaScript會自動將基元轉換為String對象,因此可以對原始字符串使用String對象方法。 在要在原始字符串上調用方法或發生屬性查找的上下文中,JavaScript將自動包裝字符串原語並調用方法或執行屬性查找。

(來自MDN

暫無
暫無

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

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