1. call方法和apply方法改变this指向的使用
改变当前使用该方法的对象中的this指向,call和apply的差别在第二个参数上,
call()第二个参数传入是一一列举出来,apply()的第二参数传入是一个数组。
var obj1 = {
name: "孙悟空",
swk : function () {
console.log(this.name);
}
}
var obj2 = {
name: "猪八戒",
zbj : function () {
console.log(this.name);
}
}
obj1.swk();
obj2.zbj();
obj1.swk.call(obj2);
obj1.swk.apply(obj2);
2. bind方法对于改变this指向的使用
bind()这个方法会创建一个函数的实例,这个实例的this值会被绑定到传递给bind()函数的值。
function a(y){
return this.x+y
}
var o={x:1}
var g=a.bind(o)
g(2)
从例子中可以看出函数a绑定到对象o上了,并且返回了新的函数g,
调用g时,a函数会当作对象o的方法来调用。bind()这个方法是将函数绑定到某个对象上,
并且返回一个新的函数,这个新函数中传入的参数都将传入被绑定的函数上。