var a = "string";
console.log("length" in a);
給出錯誤
var b = new String("string");
console.log("length" in b);
給出正確的。
a的屬性長度與b相同。 typeof是字符串,但它也是一個具有自己屬性的對象。 MDN說:
JavaScript自動將基元轉換爲字符串對象,以便可以對基元字符串使用字符串對象方法。
怎麼了?
var a = "string";
console.log("length" in a);
給出錯誤
var b = new String("string");
console.log("length" in b);
給出正確的。
a的屬性長度與b相同。 typeof是字符串,但它也是一個具有自己屬性的對象。 MDN說:
JavaScript自動將基元轉換爲字符串對象,以便可以對基元字符串使用字符串對象方法。
怎麼了?
in
關鍵字僅適用於對象。
var a = 'foo';
var b = new String(a);
console.log(typeof a); // "string"
console.log(typeof b); // "object"
閱讀字符串原語和串之間的區別documentation對象
下面的代碼將在訪問屬性,在這種情況下length
自動轉換原語的一個對象。
console.log("string".length);
b是String類型的對象,而a不是,它是字符串。 如果您嘗試使用a.isPrototypeOf(String),它應該輸出false
「* typeof是字符串,但它也是一個具有它自己的屬性的對象。*」 - well no。 – Bergi
引用中省略了隱含的上下文:「當訪問屬性*時,JavaScript自動將基元轉換爲字符串對象*」。 'in'運算符不訪問屬性。 – Bergi
有沒有答案不回答你的問題? – Xorifelse