我看到JavaScript中的运算符重载了吗?
我认为JavaScript中没有运算符重载这样的东西 然后我注意到当使用这个时,我实际上可以做减法:我看到JavaScript中的运算符重载了吗?,javascript,operator-overloading,Javascript,Operator Overloading,我认为JavaScript中没有运算符重载这样的东西 然后我注意到当使用这个时,我实际上可以做减法: let a = new BigNumber("5432"); let b = new BigNumber(1234); let c = a - b; console.log(c); // 4198 这怎么可能,或者我在这里遗漏了什么?JavaScript没有运算符重载 提供了返回值的BigNumber.prototype.valueOf。仔细阅读 来自MDN: functi
let a = new BigNumber("5432");
let b = new BigNumber(1234);
let c = a - b;
console.log(c); // 4198
这怎么可能,或者我在这里遗漏了什么?JavaScript没有运算符重载 提供了返回值的
BigNumber.prototype.valueOf
。仔细阅读
来自MDN:
function MyNumberType(n) {
this.number = n;
}
MyNumberType.prototype.valueOf = function() {
return this.number;
};
var myObj = new MyNumberType(4);
myObj + 3; // 7
JavaScript没有运算符重载 提供了返回值的
BigNumber.prototype.valueOf
。仔细阅读
来自MDN:
function MyNumberType(n) {
this.number = n;
}
MyNumberType.prototype.valueOf = function() {
return this.number;
};
var myObj = new MyNumberType(4);
myObj + 3; // 7
我不知道是什么让你认为这是运算符重载,BigNumber返回一个数字,文档说引号是因为它们调用了前面的
.toString()
。你在这里减去2个数字我通过控制台检查了它。log(typeof a)
得到了对象
,而不是数字
。我不知道是什么让你认为这是运算符重载,BigNumber返回一个数字,文档说引号是因为它们调用了前面的.toString()
。你在这里减去2个数字。我通过控制台检查了它。log(typeof a)
得到了对象
,而不是数字
。从你的回答中,我不明白表达式a-b
是如何执行/计算的。哦,是a.valueOf()-b.valueOf()吗
?那么,在这种情况下,我有可能失去准确性,对吗?好吧,我将重新表述:从“大数字”这个名称推测,我有可能失去你主观意见中的准确性?@General_Twyckenham:我错用了“-”,我的代码运行得完美无缺。然后我意识到我应该用“减号”,所以我想知道没有它它怎么工作。从你的回答中,我不明白表达式a-b
是如何执行/计算的。哦,是不是a.valueOf()-b.valueOf()
?那么在这种情况下我就有失去精度的风险,对吗?好的,我要换一种说法:从“大数字”这个名字推测,我有可能失去你主观观点的准确性?@General_Twyckenham:我错用了“-”,我的代码运行得完美无缺。然后我意识到我应该用“负号”,所以我想知道没有负号怎么行。