我在尝试使用intanceof()
运算符时遇到了这个问题。使用字符串对象时,此代码返回true:
var aStringObj = new String('String');
console.log(typeof aStringObj); // object
console.log(aStringObj instanceof String); // true

...并使用Literal Strings返回false,如下所示:
var aLiteralString = "Test literal";
console.log(typeof aLiteralString); // string
console.log(aLiteralString instanceof String); // false

根据MDN,该运算符测试对象原型链中constructor.prototype的存在,并且两者都存在; aStringObj和aLiteralString,.constructor.prototype是相同的:
var aStringObj = new String('String');
console.log(aStringObj.constructor.prototype);// String {length: 0, [[PrimitiveValue]]: ""}
var aLiteralString = "Test literal";
console.log(aLiteralString.constructor.prototype); // String {length: 0, [[PrimitiveValue]]: ""}

这是否意味着原始值不是任何原型的实例?文字字符串没有已知的构造函数?
我学习JS越多,我头脑中就会出现更愚蠢的问题。提前致谢。