为什么:
var a = "string";
console.log("length" in a);
给出错误
var b = new String("string");
console.log("length" in b);
给予真实。
a的属性长度与b相同。 typeof是字符串,但它也是具有自己属性的对象。 MDN说:
JavaScript会自动将原语转换为String对象,因此可以将String对象方法用于原始字符串。
怎么了?
答案 0 :(得分:1)
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);
答案 1 :(得分:0)
b 是字符串类型的对象,而 a 则不是,字符串。
如果您尝试a.isPrototypeOf(String)
,则应输出false