这是我的方式。第一次通话出错,第二次通话正确
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
答案 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