this

this 指向并不是在函数定义的时候确定的,而是在调用的时候确定的。换句话说,函数的调用方式(直接调用、方法调用、new调用、bind、call、apply、箭头函数)决定了 this 指向。


直接调用

函数内部的 this 指向全局对象,在浏览器中全局对象是 window,在 NodeJs 中全局对象是 global。直接调用并不是指在全局作用域下进行调用,在任何作用域下,直接通过 函数名(...) 来对函数进行调用的方式,都称为直接调用。

方法调用

函数中的 this 指向调用该方法的对象。通过对象来调用其方法函数,它是 对象.方法函数(...) 这样的调用形式。

new调用

在 es5 中,用 new 调用一个构造函数,会创建一个新对象,而其中的 this 就指向这个新对象。

箭头函数

箭头函数没有自己的 this 绑定,箭头函数中使用的 this,其实是直接包含它的那个函数或函数表达式中的 this。


Ps:非函数被调用时(这里分别打印40和10)

当obj在全局声明时,无论obj.c在什么地方调用,这里的this都指向全局对象,而当obj在函数环境中声明时,这个this指向undefined,在非严格模式下,会自动转向全局对象。

最新文章

  1. 重构sql server的sys.sp_helptext存储
  2. GitHub团队项目合作流程
  3. mvc 开发razor模式注意事项
  4. GoLang之基础
  5. Qt qss 使用
  6. PHP 命名空间总结
  7. HTML QQ聊天代码 简单的一行代码
  8. (转载)C++lambda表达式
  9. UVA 540 Team Queue
  10. Why is 0[0] syntactically valid in javascript?
  11. logback 配置详解(一)(转)
  12. 对java中classloader使用的一点理解(转)
  13. 类StringBuilder
  14. identity server4 证书
  15. 几个实用的CSS代码段总结
  16. 给json对象去除重复的值
  17. 查看局域网指定IP的电脑名
  18. netty(二) 创建一个netty服务端和客户端
  19. JAVA基础——时间Date类型转换
  20. 深入Spring Boot: 怎样排查 java.lang.ArrayStoreException

热门文章

  1. Python学习——使用dict和set
  2. <c++primer plus>学习笔记1之第八章函数探幽
  3. 第3章 编写ROS程序-1
  4. Django 之 requirement.txt 依赖文件生成
  5. lightoj1010【规律】
  6. 2017-9-12 NOIP模拟赛[hkd]
  7. 使用Git版本控制工具管理GitHub
  8. jquery jtemplates.js模板渲染引擎的详细用法第三篇
  9. ·ios 圆角
  10. Angular2.0的学习(一)