1.call()方法
window.color = "red";
var o = {"color": "blue"};
function getColor() {
console.log(this.color);
}
getColor.call(this, null);
getColor.call(o, null);
此处通过call()方法改变了this指向,即调用该函数的对象,call方法调用时需要逐一列举出参数列表。
2.apply()方法
window.color = "red";
var o = {"color": "blue"};
function getColor() {
console.log(this.color);
}
getColor.apply(this, null);
getColor.apply(o, null);
此处apply和call方法的作用类似,唯一不同的是在使用apply方法时可传入参数列表arguments或者数组对象。
3.bind()方法
window.color = "red";
var o = {"color": "blue"};
function getColor() {
console.log(this.color);
}
getColor(); //red
var getColor1 = getColor.bind(o);
getColor1();
使用bind方法后会返回一个函数实例,返回的这个函数实例的执行环境与o绑定,即使是在全局环境中执行打印的结果也是blue。
网友评论