如图 明明是一个string类型 为什么最后会输出false呢?
a只是一个以string为数据类型的值,但并不属于String对象的实例
var a= new String('aaa')
console.log(a instanceof String) //true
typeof
操作符返回一个表示数据类型的字符串,可以区分简单数据类型和引用类型(null
除外)instanceof
运算符用于测试构造函数的 prototype
属性是否出现在对象的原型链中
这里的变量 a
是一个直接定义赋值的字符串,属于原始值, 所以使用 instanceof
操作符肯定是 false
var a = new String('abc')
a instanceof String // true
刚看完《编写可维护的JavaScript》,书中建议:
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答843 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
a instanceof String
的真实意义是判断String
是否在a
的原型链上。如果字符串是用var a = new String('123')
这种方式声明的话,String
一定在a
的原型链上。var a = '123'
这个变量a
属于一个字面量字符串,而不是真正的由String构造函数new出来的字符串。具体你可以看看MDN关于String类型以及字面量的解释:
https://developer.mozilla.org...
https://developer.mozilla.org...