以下都是自己学习过程中的自问自答:
Q:JS 中的
this
是什么意思?A:我理解为一个代词。Q:什么时候能确定
this
指代的是什么?A:函数执行的时候。-
Q:上一个问题展开讲讲?A:有一种方便记住的规律就是:
-
foo.call(a, b)
中第一个参数a
就是this
指代的东西; -
foo(argv)
和foo.call(undefined, argv)
是等价的; -
a.foo(b)
和a.foo.call(a, b)
是等价的; - 在一般情况下,如果
this
是undefined
,会被自动换成global
对象,在浏览器中也就是window
对象。
-
Q:就这么简单?A:显然不是,以上只是方便初学记住的规律。也有例外情况。
Q:例外情况?A:例如 es6 中新加入的箭头函数,是在声明时就绑定了
this
,之后即使使用call
、apply
也没法改变this
的值。-
Q:在学习
this
的过程中参考的那些文章?A:以下三篇收益最多: Q:还有不解的地方吗?A:有。例如
new�
相关的部分。