基本包装类型
为了方便操作基本数据类型, JavaScript 还提供了三个特殊的引用类型: String/Number/Boolean.
下面先看一段代码:
- var s1 = "Hello world!!!";
- var s2 = s1.substring(5);
我们要知道, s1 是一个基本类型, 基本类型是没有办法的, 只有对象才有属性和方法. 那就有一个疑问, 为什么可以调用 substring() 方法呢?
原因: 当调用 s1.substring(5) 的时候, 会先把 s1 包装成 String 类型的临时对象, 再调用 substring()方法, 最后销毁临时对象.
等价于:
- var s1 = new String('Hello World!!!');
- var s2 = s1.substring(5);
- s1 = null;
创建基本包装类型的对象:
- var num = 18; // 数值, 基本类型
- var num = Number('18'); // 类型转换
- var num = new Number(18); // 基本包装类型, 对象
注意: String 包装类最常用, Number 和 Boolean 基本包装类型基本不用, 使用的话可能会引起歧义.
Demo:
- var b1 = new Boolean(false);
- var b2 = b1 && true;
下面来讨论一下 b2 的值是什么?
b2 = true.
原因: b1 是一个 Boolean 对象, 它的原始值 (PrimitiveValue) 为 false.b1&& true 因为 b1 是一个非空对象, 所以会默认转换为 true. 所以 b2 的值为 true.
扩展: 会转换为 false 的 5 种情况: 0 '' null NaN undefined
来源: http://www.bubuko.com/infodetail-3159200.html