1,箭头函数
箭头函数的this指向该函数外层的作用域。
var name = '李四'let obj = { name: '张三', getName: function () { return this.name }}console.log(obj.getName()) // 张三
var name = '李四'let obj = { name: '张三', getName: () => { return this.name }}console.log(obj.getName()) // 李四
原本getName由obj调用应该指向obj,而箭头函数让getName在定义的时候就让this指向了该函数作用域的外层作用域,也就是全局作用域window。
2,apply,call,bind
这三个方法,都是用来改变this的指向的。他们都是定义在Function原型上的。
可以看到三种方法的第一个参数都是一个对象,这个对象就是函数体内部this的指向。
这三个方法也有不同。
call 第一个参数是this的指向,后面的函数本身参数依次排列。
apply第一个参数是this的指向,后面的函数本身参数用数组进行依次排列。
bind第一个参数是this的指向,后面参数和call一样依次排列,但是却不执行该函数,返回一个新的this指向的函数。
例如: