js this 指向问题

this 指向:

1 全局作用域,this 指向 window 对象

2.普通函数调用,非严格模式下,this 执行 window

3.严格模式下,函数 this 指向 undefined

  1. 对象方法调用,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 实例

  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    680 引用 • 1139 回帖 • 679 关注

广告 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...