Javascript Node.js更改原型内的数字对象值
我想给Number类型添加一个新方法,然后使用它来更改它自己的值。我写了以下代码:Javascript Node.js更改原型内的数字对象值,javascript,node.js,numbers,prototype,Javascript,Node.js,Numbers,Prototype,我想给Number类型添加一个新方法,然后使用它来更改它自己的值。我写了以下代码: Number.prototype.maxx = function(N) { if (N > this.valueOf()) { //change this number value to N } } var X = 5; X.maxx(7); console.log(X); //expect to show 7 我尝试下面的代码来更改值 this = N; 或 或 但他们都没有工作
Number.prototype.maxx = function(N) {
if (N > this.valueOf()) {
//change this number value to N
}
}
var X = 5;
X.maxx(7);
console.log(X); //expect to show 7
我尝试下面的代码来更改值
this = N;
或
或
但他们都没有工作
你能给我一些提示吗。
谢谢
我想强调的一点是,当你调用X.maxx时,你不能改变这个值。相反,您必须将从方法返回的值重新分配给X。您不能更改内置类型的原语值,因为它存储在一个特殊属性中(我相信它可能是Symbol)。数字也是不可变的
您仍然可以创建一个返回两个中较大的一个的方法。因为它是不可变的,所以我不确定扩展原语是否有意义(无论如何都不建议这样做)。我会改为使用
Math.max(X,N)
或将其包装到您自己的类中,以允许覆盖当前值。@danosure感谢您的评论。实际上,我在问题中提到的函数只是一个简化问题说明的例子。
this.valueOf(N);
this.value = N; //of course number do not have any property named 'value'. but I just try it!
Number.prototype.maxx = function(N) {
if (N > this.valueOf()) {
return N;
} else {
return this.valueOf();
}
}
var X = 5;
X = X.maxx(4);