this 指向: |
---|
1 全局作用域,this 指向 window 对象
2.普通函数调用,非严格模式下,this 执行 window
3.严格模式下,函数 this 指向 undefined
-
对象方法调用,this 执行改对象
5.事件绑定方法,this 执行事件绑定对象
6.构造函数,this 指向实例对象,原型对象方法也执行实例对象
7.匿名函数,settimeout()this 执行都为 window
补充:匿名函数包括立即执行函数,匿名函数使用规范: (function (){})()
使用场景:1 闭包,返回匿名函数
2 模拟块级作用域,执行完销毁,减少变量命名冲突
8.特殊情况
this 本因该执行 btn,这里指向 window
解决方法:
通过 call,apply,bind 改变 this 指向
1 函数.call(对象,arg1,arg2....)
2 函数.apply(对象,[arg1,arg2,...])
3 函数.bind(对象,arg1,arg2,....)
区别:1call,bind 可传多个参数,apply 也可传多个参数,但第二个必须为数组,call 第一个参数传入指向谁,不传非严格模式下为 window,严格模式为 undefined
2.call,apply 为立即指向,而绑定后返回的是函数,必须调用一次函数,并且为永久性的改变指向
1call
函数.call(this 要指向的对象)
2.apply
函数.apply(obj,[arg1,arg2])
3.bind()
9 箭头函数没有 this 指向,由所在宿主对象决定。
不能通用 call,apply 改变
总结:1this 所在函数由哪个对象调用吗,指向哪个对象
2 当函数指向,没有明确 this 指向,则为 window
3.所以的 this 在运行时,才能明确它的指向,除外这个:
var fb =
fn.bind(obj);
window.fb();
无论谁调用 fb 函数, 函数的 this 都会指向 obj
参考:this 指向
call,apply,bind 改变 this
二:Vue this 指向
根据具体环境,箭头函数和普通函数 this 一般指向为 vue 实例
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于