gpt4 book ai didi

javascript - 如何在 Javascript 中为原始类型的隐式转换更改 toString()?

转载 作者:行者123 更新时间:2023-11-30 12:23:04 24 4
gpt4 key购买 nike

作为实验,我做了这样的事情:

Object.prototype.toString=function(){
alert('works!');
}
'test'+{}; // alert is shown

但是,这不适用于原语:

Number.prototype.toString=function(){
alert('works!');
}
'test'+123; // no alert
'test'+(new Number(123)); // no alert
(123).toString(); // yes alert

原始隐式转换是否可以使用自定义 toString 方法?

最佳答案

在幕后,Javascript 首先调用 .valueOf()

Number.prototype.valueOf = function(){ alert('works!'); }

这将发出警报,因为它正在使用 Number 对象:

'test'+(new Number(123))

这不会提醒,我相信是因为 123 没有自动装箱到 Number 中:

'test'+123

Javascript 确实有基本类型(也就是“未装箱”的数字,也就是继承自 Object),但我不相信你可以修改那些原始原型(prototype).所以,您不能重载纯原始值函数。

关于javascript - 如何在 Javascript 中为原始类型的隐式转换更改 toString()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30389236/

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