javascript:映射中未定义自己的函数
我得到以下错误javascript:映射中未定义自己的函数,javascript,Javascript,我得到以下错误ReferenceError:double未定义 代码: 如何修复它?您需要在Number的实例上调用您的方法: ... console.log(x.map(function (n) { return n.double(); })); double是Number prototype的属性,而不是全局变量 x.map(function(y){return y.double()}); 你不能那样做。原因是地图中的这个不是一个数字。这就是为什么不能像您所希望的那样使用原型 您可以执行
ReferenceError:double未定义
代码:
如何修复它?您需要在Number的实例上调用您的方法:
...
console.log(x.map(function (n) { return n.double(); }));
double是Number prototype的属性,而不是全局变量
x.map(function(y){return y.double()});
你不能那样做。原因是
地图中的这个不是一个数字。这就是为什么不能像您所希望的那样使用原型
您可以执行以下操作:从map
Number.double = function (e){
return e*2;
}
x=[1,2]
console.log(x.map(Number.double));
编辑:如果您确实需要原型解决方案,可以执行以下操作:
Number.prototype.double = function (e){
if (e) return e*2;
else return this*2;
}
x=[1,2]
console.log(x.map(Number.prototype.double));
您确实不应该扩展或修改本机javascript原型(它可能会产生各种意外的副作用),但是double()
现在不再是Number
的方法-这完全改变了代码。你不能再说n.double()
来加倍一个数字。@RichieHindle我不认为它改变了代码,但我也为你的案例添加了解决方案。我实际上认为,如果它只用于这个特定的案例,那么就没有必要把它放在原型中;第一个方法只是添加了一个静态
方法,而不是成员
方法。
Number.prototype.double = function (e){
if (e) return e*2;
else return this*2;
}
x=[1,2]
console.log(x.map(Number.prototype.double));