/ JavaScript / 3651浏览

JavaScript中的this到底指向谁?

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: 你干嘛哎呦
更新于
手写一个Promise
手写一个Promise
手写一个call、apply、bind
手写一个call、apply、bind
防抖(debounce)、节流(throttle)原理与实现
防抖(debounce)、节流(throttle)原理与实现
JS如何等待多个异步操作完成后再进行操作
JS如何等待多个异步操作完成后再进行操作
原型
原型

0

  1. This post has no comment yet

发表回复