JavaScript中的this逃不过这4种绑定方式:
1.默认绑定
2.隐式绑定
3.显式绑定
4.new绑定
在申明式函数中,this指向调用这个函数的执行上下文,而在箭头函数中,this是指向词法作用域中的执行上下文。
看个例子🌰:
let name = 'global name' let o1 = { name: 'o1', fn: function () { console.log(this.name) } } let o2 = { name: 'o2', fn: () => { console.log(this.name) } } // 默认绑定,this指向最终调用它的对象 o1.fn() // o1 // 箭头函数中this继承自词法作用域 o2.fn() // globle name // 隐式绑定, let fn = o1.fn fn() // globle name // 显示绑定,显示的改变函数中的this执行 let o1.fn.call(o2) // o2 // new绑定 function Chicken(name) { this.name = name } Chicken.prototype.makeSound = function () { console.log(this.name + ':你干嘛哎呦') } let chicken = new Chicken('ikun') chicken.makeSound() // ikun: 你干嘛哎呦
0