我在玩原型函数,无法理解为什么下面的简单示例未返回数字的负数。

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


知道我在哪里弄错了吗?我知道我可以改用属性获取器,但是我正在首先研究基础知识(并希望从错误中学习)。

最佳答案

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

num.neg(-1);


当x未定义时返回-x给出NaN。但是这种失败的目的。您需要对函数的声明有所不同:

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

09-25 15:29