装箱机制
js
const a = 1
console.log(a.__proto__ === Number.prototype) // true
console.log(a instanceof Number) // false在JavaScript中,const a = 1定义了一个原始类型的数字
- 装箱机制(Boxing):当你尝试访问原始类型的属性或方法(__proto__)时,JavaScript引擎会自动将其临时包装成对应的包装对象(即Number对象)
- 原型链连接:这个临时包装对象的原型指向
Number.prototype,因此,a.__proto__实际上访问的是这个临时对象的原型,结果为true
instanceof 运算符的工作原理时检查构造函数的prototype属性是否出现在某个对象的原型链上
a是一个原始数字1,它本身并不是一个对象instanceof的规则:根据ECMAScript规范,如果instanceof左侧的操作数不是对象(Object),它会直接返回false- 对比:如果你使用
const b = new Number(1)创建一个数字对象,那么b instanceof Number会返回true