【发布时间】:2016-01-08 18:25:43
【问题描述】:
我是 Javascript 新手,并试图在父对象上执行以下代码,但它没有按预期工作。请帮忙。
以下代码无法按预期工作并引发错误:
"TypeError: this.reduce 不是函数"
Array.prototype.merge = merge = this.reduce(function(arg1,arg2) {
return arg1+arg2;
},[]);
var arrays = [1,2,3,4,5,6];
console.log(arrays.merge);
报错如下:
TypeError: this.reduce is not a function
at Object.<anonymous> (C:\Program Files\nodejs\merge.js:1:100)
at Module._compile (module.js:434:26)
at Object.Module._extensions..js (module.js:452:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:475:10)
at startup (node.js:117:18)
at node.js:951:3
如果我直接调用数组,它可以正常工作,但这不是我想要做的。我应该能够传递数组,如上面的示例代码所示。
Array.prototype.merge = merge = [1,2,3,4,5,6].reduce(function(arg1,arg2) {
return arg1+arg2;
},[]);
console.log(arrays.merge);
【问题讨论】:
-
这是因为在您的代码中,
this没有设置为数组对象,而是设置为全局对象。 -
感谢您回答这个@OceansOnPluto,但我如何将“this”引用到数组对象并按照我在示例中展示的方式调用“arrays.merge”?
-
首先,你想做什么?你希望你的预期回报是什么?
-
当我调用“consol.log(arrays.merge)”时,它应该向我打印 123456
-
次要但重要的注意事项,您需要致电
arrays.merge()而不是arrays.merge。缺少括号会使其返回函数对象而不是运行函数代码。 (一旦你解决了其他问题。)
标签: javascript arrays javascript-objects reduce dom-events