我来说下吧,这是我上次的理解,不知道是不是准确。---say.call(window, "Hello world");为什么会传window对象,而下面的就会传person对象?
say执行时被推入window环境,此时上下文,this指代window,创建作用域
person.say的say执行时被推入person环境,此时上下文,this指代person,创建作用域
say.call(window, "Hello world"),将say的执行环境修改为window,上下文改变,this指代window,创建作用域
say.call(person, "Hello world"),将say的执行环境修改为person,上下文改变,this指代person,创建作用域
因此,call才具有修改作用域的表现,但其实是改变函数的执行环境,重新创建作用域。
总的来说,this就是当前执行环境的上下文,理解了这句就差不多了。

返回顶部