如果将一个对象的方法作为回调函数传入,你需要定义一个确定的this,否则它将作为一个函数来执行,即this的指向会出现问题.例如:
我们想遍历一个数组,并把数组的每一项放入一个新数组,而这个新数组和push方法是一个对象obj的属性及方法,我们感觉正常写法如下
var obj={
ar:[],
push: function (c) {
console.log(this);-->打印window
this.ar.push(c);
}
}
var arr=[1,2,3];
arr.forEach(obj.push)
console.log(obj.ar);
但是却报错:TypeError: Array.prototype.push called on null or