js中this的指向问题

核心

js中this的指向不是在定义的时候确定的,而是在调用时明确。

指向口诀

“谁调用指向谁,如果存在多级调用,那么它的指向就是离它最近的调用者”,光说不练假把式,上代码!

let obj = {
    name :  'paopao',
    sayName:function (){
        console.log(this.name)
    }
}

obj.sayName()  //paopao

直接在方法中打印this

function consoleThis () {
    console.log(this)
}
consoleThis() //window

这里的consoleThis()看似没有调用者,其实他可以换种写法window.consoleThis(),因为在浏览器环境中定义的方法都可以看做是window的属性。

箭头函数中的this

箭头函数中并没有this,它的this继承自父级。也就是说箭头函数中的this的指向与它父级中this的指向一致。

let obj = {
    name:'dollar',
    sayName:()=>{
        console.log(this.name)
    }
}
window.name ='haha'
obj.sayName()  //haha

这个例子中sayName方法中的this与obj的this保持一致,当执行obj.sayName()时,其实是window.obj.sayName(),即window调用了obj那么obj的this指向就是window,所以obj.sayName()最后输出了定义在window上的haha

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值