Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我看到JavaScript中的运算符重载了吗?_Javascript_Operator Overloading - Fatal编程技术网

我看到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

我认为JavaScript中没有运算符重载这样的东西

然后我注意到当使用这个时,我实际上可以做减法:

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:我错用了“-”,我的代码运行得完美无缺。然后我意识到我应该用“负号”,所以我想知道没有负号怎么行。