Javascript原型函数失败

Javascript原型函数失败,javascript,function,prototype,Javascript,Function,Prototype,我在玩原型函数,不明白为什么下面的简单示例不返回负数 Number.prototype.neg = function(x) { return -x }; var num = -1; var num2 = 1234; console.log(num.neg()); // returns NaN (and not 1) console.log(num2.neg()); // returns NaN (and not -1234); 知道我在哪里犯的错吗?我知道我可以使用属性getter来

我在玩原型函数,不明白为什么下面的简单示例不返回负数

Number.prototype.neg = function(x) { return -x };

var num = -1;
var num2 = 1234;

console.log(num.neg());   // returns NaN (and not 1)
console.log(num2.neg());  // returns NaN (and not -1234);

知道我在哪里犯的错吗?我知道我可以使用属性getter来代替,但我首先要学习基本知识(希望从错误中学习)。

您没有向函数传递任何参数,因此根据您声明函数的方式,您需要执行以下操作:

num.neg(-1);
当x未定义时返回-x将给出
NaN
。但这样做是不符合目的的。您需要以稍微不同的方式声明函数:

Number.prototype.neg = function() { return -this };

您没有向函数传递任何参数,因此根据您声明函数的方式,您需要执行以下操作:

num.neg(-1);
当x未定义时返回-x将给出
NaN
。但这样做是不符合目的的。您需要以稍微不同的方式声明函数:

Number.prototype.neg = function() { return -this };

无论是谁隐藏在反对票背后,请解释你的行为。谢谢欧姆瑞。一旦它指向它,就很明显了。我现在指的是-这没有任何争议,而且效果很好。对于隐藏在否决票背后的人,请解释你的行为。谢谢Omri。一旦它指向它,就很明显了。我现在指的是-这没有任何争议,而且效果很好。真的吗?有人投了反对票?真的?有人否决了吗?