鉴于字面数字严格来说不是一个实例Number
,为什么我可以调用原型方法Number
(or String
, or Boolean
) 对应文字对象上的对象?这是跨浏览器的标准行为吗?
当这种情况发生时到底发生了什么?我怀疑它在调用方法之前将文字强制转换为相应的类型,因为当我检查时typeof this
在方法中,它返回'object'
而不是'number'
.
文字不会被强制转换为实例。
内部发生的事情是创建一个实例,将值复制到该实例,并使用该实例执行该方法。然后实例就被销毁了。该文字实际上并未用于执行该方法。当像 String 对象一样使用字符串基元时,此“包装器”对象概念也可与字符串基元一起使用。这种行为是标准的。
3 是数字文字。不是 Number 类型的实例。 JavaScript 具有原始数字类型和本机 Number 对象。
From MDN:在要调用方法的上下文中
发生原始字符串或属性查找时,JavaScript 将
自动包装字符串原语并调用方法或执行
属性查找。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)