定义上的区别
- 普通函数中的this
- 默认情况下,函数时定义在window上的,this指向window
- 严格模式下(设置了’use strict’),this为undefined
- 如果函数是某个对象的属性,此时称这个函数是这个对象的方法
- 方法中的this指向这个对象
- ES6中,类的构造函数中的this指向该类的实例(不同于方法中的this只指向某一个实例,这个this指向此类所有的实例)
- 当使用call,apply,bind(ES5新增)绑定的,this指向绑定对象
- 箭头函数中的this
- 默认指向定义它时,所处上下文的对象的this指向(这里值得是整个箭头函数处在的那个上下文)。
- 即使是call,apply,bind等方法也不能改变箭头函数this的指向
其实定义在全局上下文中的函数是window的属性,所以指向window,也属于第二种情况,这里只是单独拿出来强调下
代码示例
定义四个对象如下:
let A1 = {
sayHello: function(