js改变函数this指向情况总结
1.call方法
(1)借用构造函数
(2)借用其他对象中的方法
var obj = {
0: 100,
1: 200,
2: 300,
3: 400,
length: 4
}
// obj.push(500); // 报错 对象中不存在这个方法
// 借用数组的
Array.prototype.push.call(obj,500);
console.log(obj);
2.apply方法
与call方法一样,唯一不同的时,函数或方法被借用时,apply以数组的方式存放实参。
3.bind方法
和call使用方式一样,不一样的时,使用bind时,借用的函数不会被立即执行,而是返回一个新的函数,若要执行,需要自己调用。
var obj = {
age: 18
};
// id为box的div元素对象
var box = document.getElementById('box');
// 为box注册事件
box.onclick = function () {
console.log(this.age);
}.bind(obj);
setInterval(function() {
console.log(this.age);
}.bind(obj), 500);