代码如下:
var ck=new String('aaaa')
ck instanceof Object true
//////////////
var str='aaaa'
str instanceof Object false
为什么第二个会显示false?这两个不都是字符串吗?
代码如下:
var ck=new String('aaaa')
ck instanceof Object true
//////////////
var str='aaaa'
str instanceof Object false
为什么第二个会显示false?这两个不都是字符串吗?
首先, instanceof运算符用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置
str='aaaa', str instanceof Object; str 是基本类型【string】,所以得到的结果是false
提问之前请先搜索一下 MDN 或者 SF,尤其是这种概念性的知识!
MDN: https://developer.mozilla.org...
segmentfault: https://segmentfault.com/a/11...
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
JavaScript
中的数据有基础类型和包装对象的两种概念。基础类型是使用字面量声明是直接创建,包装对象就是使用new String()
构造函数来创建实例的方式,不论是哪种数据类型的构造函数它们返回后都是个对象。基础类型的数据在程序中大多数情况都会被转换成包装对象,例如字符串的length属性及其他继承原型的方法或条件判断中的那些比较运算。之所以能使用这些原型继承方法和属性或进行不同类型数据间比较运算就是因为在运算过程中
JS
把它们先包装成对象,然后调用各种方法和属性来进行运算的。