javascript - Boolean对象和基本类型Boolean区别
问题描述
var a=new Boolean(false);var b=false;alert(a instanceof Boolean);alert(b instanceof Boolean);第一个弹出true第二个弹出false为什么?不是太懂。
问题解答
回答1:JavaScript 里的值有两种类型:原始类型和引用类型(对象)。
false 是一个 boolean 原始类型的值,不是对象,所以 false instanceof Boolean 是 false。
同理 'foo' instanceof String 也是 false。
检查原始类型可以用 typeof。
你会看到 typeof false 的值是 'boolean',注意是小写“b”。
以及:
typeof Boolean 是 'function'Boolean instanceof Object 是 true
由于 JavaScript 会悄悄做类型转换,很多时候会让使用者疏忽这类型之间的差异。比如 var length = 'hello world'.length,就是把原始类型 string 转换成了 String 对象的实例。
回答2:var a = new Boolean(false);var b = false;alert(typeof a); // ’Object’alert(typeof b); // ’Boolean’alert(a === b); // false回答3:
instanceof 是用于判断对象是否为某个构造函数的实例 b显然不是对象
回答4:除object外,其他类型都属于基本类型,你这里就是判断是否为Boolean实例,属于object,后面的基本类型就是false了,不是new出来的一个Boolean实例,结果当然也就是false了。
相关文章:
1. mysql - SQL语句可以提供“查询表,并至第100条结果为止”吗?2. python - 正则表达式中,如果匹配到的字符串后一半刚好是下一个匹配字符串的前一半,怎么实现?3. android - 类似这样的recyclerview滑动效果4. javascript - 如何彻底禁止平板电脑上浏览器的手势缩放功能5. python - xpath提取网页路径没问题,但是缺失内容?6. javascript - js一个call和apply的问题?7. javascript - 给某个类添加一个伪类,这个类有click事件,现在我点击伪类也触发了click事件8. javascript - 前端开发 本地静态文件频繁修改,预览时的缓存怎么解决?9. node.js - JavaScript的一个不能理解的地方10. Eclipse / Java-导入java。(namespace)。*是否有害?
