在Number方法中指定Number的新值

Assign new value of Number in Number method

本文关键字:Number 新值 方法      更新时间:2023-09-26

我的目标是将方法添加到Number对象中,这将更改数字的值。像这个

var a = 10;
a.add(5);
console.log(a); // Return 15

这是可能的,或者唯一的方法是

Number.prototype.add = function(n) { return this.valueOf() + n; }
var a = 10;
a = a.add(5);

感谢

问题是在JS中,基元值是不可变的。

从理论上讲,可以使用数字对象并更改其[[NumberData]]内部插槽。然而,ECMAScript没有提供这样做的方法。

相反,考虑返回一个对象,当被强制为具有valueOf的数字时,该对象会返回所需的数字,例如

function MyNumber(n) {
  this.number = n;
}
MyNumber.prototype.add = function(n) {
  this.number += n; return this;
};
MyNumber.prototype.valueOf = function() {
  return this.number;
};
var n = new MyNumber(10);
n.add(5);
n + 0; // 15

不确定这是否会对您有所帮助。但是javascript函数currying可能很有用。例如

function add(x){
  return function(o){
    return x+o;
   }
}
var a = add(4)(6);
document.getElementById('updateValue').textContent=a

工作