“string”中的长度与新String中的长度(“string”)

时间:2017-03-26 13:45:04

标签: javascript

为什么:

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对象方法用于原始字符串。

怎么了?

2 个答案:

答案 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