1,this的指向
在函数中的this是在运行时候决定的,而不是函数定义时
全局环境中的this指window
其它函数中的this指向调用它的对象
2,改变this指向的方法
一,call 二,apply 三,bind
call()方法的使用:
函数体.call(obj)
var obj1 = {
fn: function () {
// 执行逻辑
}
}
var obj2 = {
fn: function () {
// 执行逻辑
}
}
obj1.fn.call(obj2,,,)
- call方法传参只需要使用多个逗号隔开
apply()方法的应用
区别:参数需要传入一个数组
var obj1 = {
name: 'li',
fn: function () {
return this.name;
}
}
var obj2 = {
name: 'yang',
fn: function (str) {
return this.name+str
}
}
console.log(obj2.fn.apply(obj1,['888'])) //li888
- 以上两个方法改变函数的this指向并立即调用该函数
bind在使用形式上和上面两个call和apply一样
只不过不立即调用,经常在定时器,或其他回调函数等不立即调用的函数改变this指向时使用
例如:setTimeout(function(){.bind(obj),1000)
该匿名函数在1000毫秒后调用,使用bind改变this指向又不立即调用,符合使用该场景时调用。
网友评论