我的目标是为Number对象添加方法,该方法将更改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);
谢谢
答案 0 :(得分:7)
问题是在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
答案 1 :(得分:0)
不确定这是否会对您有所帮助。但javascript函数currying可能很有用。例如
function add(x){
return function(o){
return x+o;
}
}
var a = add(4)(6);
document.getElementById('updateValue').textContent=a