Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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 Node.js更改原型内的数字对象值_Javascript_Node.js_Numbers_Prototype - Fatal编程技术网

Javascript Node.js更改原型内的数字对象值

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类型添加一个新方法,然后使用它来更改它自己的值。我写了以下代码:

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);