gpt4 book ai didi

javascript - 为什么在 JavaScript 中, '3 instanceof Number' == false,但 '3..method()' 会调用 Number.prototype.method?

转载 作者:行者123 更新时间:2023-12-01 15:40:21 24 4
gpt4 key购买 nike

鉴于文字数字严格来说不是 Number 的实例,为什么可以调用Number的原型(prototype)方法(或 StringBoolean )对象在相应的文字对象上?这是跨浏览器的标准行为吗?
发生这种情况时究竟发生了什么?我怀疑它在调用方法之前将文字强制转换为相应的类型,因为当我检查 typeof this在方法中,它返回 'object'而不是 'number' .

最佳答案

文字不会被强制转换为实例。

内部发生的是创建实例,将值复制到实例,然后使用实例执行方法。然后实例被销毁。文字实际上并未用于执行该方法。当字符串原语像字符串对象一样使用时,这个“包装器”对象概念也与字符串原语一起使用。这种行为是标准的。

3 是数字文字。不是 Number 类型的实例。 JavaScript 有一个原始的数字类型和一个原生的 Number 对象。

From MDN: In contexts where a method is to be invoked on a primitive string or a property lookup occurs, JavaScript will automatically wrap the string primitive and call the method or perform the property lookup.

关于javascript - 为什么在 JavaScript 中, '3 instanceof Number' == false,但 '3..method()' 会调用 Number.prototype.method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40491240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com