|
|
|
@ -29,6 +29,7 @@
@@ -29,6 +29,7 @@
|
|
|
|
|
- JavaScript 语言在设计上视图模糊对象和基本类型之间的关系,代码中可以把对象的方法放在基本类型上使用比如 `"Hello".charAt(0)` |
|
|
|
|
- 这是因为 JavaScript 运算符提供了装箱操作,它会根据基础类型构造一个临时对象,使得我们能在基础类型上调用对象类型的方法 |
|
|
|
|
- JavaScript高级程序设计中的解释: 为了方便操作原始值,ES提供了3种特殊的引用类型:Boolean、Number和String。这些类型具有其他引用类型一样的特点,但也具有与各自原始类型对应的特殊行为。每当用到某个原始值的方法和属性时,后台都会创建一个相应的原始包装类型的对象,从而暴露出操作原始值的各种方法。 |
|
|
|
|
- 围绕原始数据类型创建一个显式包装器对象从 ECMAScript 6 开始不再被支持。 然而,现有的原始包装器对象,如 new Boolean、new String以及new Number,因为遗留原因仍可被创建 |
|
|
|
|
|
|
|
|
|
## 类型转换 |
|
|
|
|
|
|
|
|
@ -47,4 +48,6 @@ var symbolObject = (function(){ return this; }).call(Symbol("a"));
@@ -47,4 +48,6 @@ var symbolObject = (function(){ return this; }).call(Symbol("a"));
|
|
|
|
|
console.log(typeof symbolObject); //object |
|
|
|
|
object console.log(symbolObject instanceof Symbol); //true |
|
|
|
|
console.log(symbolObject.constructor == Symbol); //true |
|
|
|
|
``` |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
- 装箱机制会频繁产生临时对象,在一些对性能要求较高的场景下,我们应该尽量避免对基本类型做装箱转换 |