您的位置 首页 java

迷倒万千少女的JavaScript之this作用域详解

this 是面向对象语言中的一个重要概念,在Java,C#等大型语言中,this固定指向运行时的当前对象。但是在JavaScript中,由于JavaScript的动态性,this的指向在运行时才确定。这个特性给我们带来迷惑的同时,也带来了编程上的自由和灵活,结合apply、call、 bind 方法,可以使JavaScript变得异常强大。

强大的特性必然会让人难以理解,尤其是初学者,下面我将传授我多年的经验,教你分清 this 的作用域到底是哪里?

就是这么简简单单一句话,大家千万记住。接下来是求证时间,请睁大你的双眼,见证奇迹的时刻到了

这段代码的输出值是什么?张三还是李四? 答案是李四,为什么呢?

我们来分析一下: this 所在的方法块是bar,而bar这个方法是谁调用的呢?最后一行代码已经表明了,bar()是由foo这个对象调用的,所以得出结论, this 指向的是foo这个对象。

那么我们趁热打铁,再来看一个例子(进阶版):

这段代码的执行结果是这样的:

我们来分析一下,obj.foo()返回foo对象很好理解,跟上面的一样。这里要着重讲一下bar()这个方法,为什么返回 window 对象呢?

其实bar()这个方法,它的完整写法应该是this.bar(),而这里的this是指代浏览器中的window对象,所以程序的执行结果也毫无疑问是window对象。

还是那句话, 谁调用this所在的函数,this就指向谁!

文章很短,但都是干货!希望大家可以从字里行间学到真功夫!大家如果喜欢我的文章,记得关注我。

文章来源:智云一二三科技

文章标题:迷倒万千少女的JavaScript之this作用域详解

文章地址:https://www.zhihuclub.com/193929.shtml

关于作者: 智云科技

热门文章

网站地图