专栏首页JavaEdgeJavaScript 的 this 小结纯粹的函数调用作为对象方法的调用作为构造函数调用apply 调用

JavaScript 的 this 小结纯粹的函数调用作为对象方法的调用作为构造函数调用apply 调用

JavaScript 语言的一个关键字。

它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体内部使用。

上面代码中,函数test运行时,内部会自动有一个this对象可以使用。

那么,this的值是什么呢?

函数的不同使用场合,this有不同的值。 总的来说,this就是函数运行时所在的环境对象。 下面分情况,详细讨论

纯粹的函数调用

函数的最通常用法,属全局性调用,this即代表全局对象。

运行结果是1

作为对象方法的调用

函数还可以作为某个对象的方法调用,这时this就指这个上级对象

结果:1

作为构造函数调用

通过这个函数,可以生成一个新对象。this就指这个新对象。

运行结果为1

为了表明这时this不是全局对象,我们对代码做一些改变:

运行结果为2,表明全局变量x的值根本没变。

apply 调用

apply()是函数的一个方法,作用是改变函数的调用对象。 它的第一个参数就表示改变后的调用这个函数的对象。因此,这时this指的就是这第一个参数。

apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。

如果把最后一行代码修改为

obj.m.apply(obj);

运行结果就变成了1,证明了这时this代表的是对象obj。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • React.js 实战之深入理解组件sublime 插件安装组件间通信

    JavaEdge
  • React.js 实战之 事件处理

    React事件绑定属性的命名采用驼峰式写法,而不是小写。 如果采用 JSX 的语法你需要传入一个函数作为事件处理函数,而不是一个字符串(DOM元素的写法) ...

    JavaEdge
  • Servlet 中的 Listener

    JavaEdge
  • JavaScript中的this/call/apply/bind

    this 关键字在大部分语言中都是一个重要的存在,JS中自然不例外,其表达的意义丰富多样甚至有些复杂,深刻理解this是学习JS、面向对象编程非常重要的一环。

    刘亦枫
  • javascript基础修炼(3)—What's this(下)

    严格模式是ES5中添加的javascript的另一种运行模式,它可以禁止使用一些语法上不合理的部分,提高编译和运行速度,但语法要求也更为严格,使用use str...

    大史不说话
  • 【面试需要】掌握JavaScript中的this,call,apply的原理

    掘金 | https://juejin.im/user/5a16e1f3f265da43128096cb

    达达前端
  • javascript基础修炼(2)——What's this(上)

    this是javascript关键字之一,是javascript能够实现面向对象编程的核心概念。用得好能让代码优雅高端,风骚飘逸,用不好也绝对是坑人坑己利器。我...

    大史不说话
  • JavaScript 中 this 的使用技巧总结

    在 js 中,this 这个上下文总是变化莫测,很多时候出现 bug 总是一头雾水,其实,只要分清楚不同的情况下如何执行就 ok 了。

    哲洛不闹
  • 面向对象、this

    小胖
  • JS 中 this 在各个场景下的指向

    很多时候, JS 中的 this 对于咱们的初学者很容易产生困惑不解。 this 的功能很强大,但需要一定付出才能慢慢理解它。

    前端小智@大迁世界

扫码关注云+社区

领取腾讯云代金券