使用文字时,数组原型函数不起作用

时间:2018-11-26 16:17:56

标签: javascript

这是我的方式。第一次通话出错,第二次通话正确

Array.prototype.myEach = function (callback) { // defined my function
 for (let index = 0; index < this.length; index++) {
   const element = this[index];
   callback(element, index)
 }
}
    
['a','b','c'].myEach(console.log) //Cannot read property 'myEach' of undefined
    
new Array('a','b','c').myEach(console.log) // a b c

1 个答案:

答案 0 :(得分:1)

这是自动分号插入的副作用。在函数表达式的末尾没有分号的情况下,JavaScript运行时错误地认为代码的下一部分(数组文字)是要评估的东西,其结果应与函数结合使用。

在函数表达式的末尾放置一个分号,即可解决问题。

Array.prototype.myEach = function (callback) { // defined my function
 for (let index = 0; index < this.length; index++) {
   const element = this[index];
   callback(element, index)
 }
}; // <-- Let the runtime know that this is the end of the expression
    
['a','b','c'].myEach(console.log) //Cannot read property 'myEach' of undefined
    
new Array('a','b','c').myEach(console.log) // a b c