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