|
|
@ -51,4 +51,10 @@ object console.log(symbolObject instanceof Symbol); //true |
|
|
|
console.log(symbolObject.constructor == Symbol); //true |
|
|
|
console.log(symbolObject.constructor == Symbol); //true |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
- 装箱机制会频繁产生临时对象,在一些对性能要求较高的场景下,我们应该尽量避免对基本类型做装箱转换 |
|
|
|
- 装箱机制会频繁产生临时对象,在一些对性能要求较高的场景下,我们应该尽量避免对基本类型做装箱转换 |
|
|
|
|
|
|
|
- call 本身会产生装箱操作,所以需要配合 typeof 来区分基本类型还是对象类型,因 call 当传入值为基本类型时,会触发这个基本类型的对应的类,所以用`object.prototype.tostring` 不正确,如果是对象则可以用此方法得出该实例的类 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 拆箱转换 |
|
|
|
|
|
|
|
- 在 JavaScript 标准中,规定了 ToPrimitive 函数,它是对象类型到基本类型的转换(即,拆箱转换) |
|
|
|
|
|
|
|
- 拆箱转换会尝试调用 valueOf 和 toString 来获得拆箱后的基本类型。如果 valueOf 和 toString 都不存在,或者没有返回基本类型,则会产生类型错误 TypeError |
|
|
|
|
|
|
|
- |