this指向问题

本文详细介绍了JavaScript中函数调用时的call方法,以及函数作为对象方法时的this指向。通过示例展示了箭头函数如何处理this,强调了箭头函数不具有自己this的特点,说明了this的指向取决于其定义时的上下文。
摘要由CSDN通过智能技术生成

 函数调用的时候会执行call()方法

function get(content){
    console.log(content)
}
get('xixi');
get.call(window,'xixi');

 函数作为对象的方法被调用时也会执行call()方法

var person = {
    name:'张三',
    run:function(time){
        console.log(this.name,time);
    }
}
person.run(2)
person.run.call(person,2)

案例:谁调用this就指向谁

var name = 222;
var a = {
    name:111,
    say:function(){
        console.log(this.name);
    }
}
var fun = a.say;
fun(); // fun.call(window)  222
a.say(); //a.say.call(a)    111
var b = {
    name:333,
    say:function(fun){
        fun() //fun.call(window)
    }
}
b.say(a.say); //            222
b.say = a.say;
b.say() //b.say.call(b) //  333

箭头函数中的this 

箭头函数没有自己的this

箭头函数中的this指向 定义箭头函数 所在的代码块的 外层的this

var obj = {
    x: 222,
    say:function(){
        var one = ()=>{
            console.log(this.x)
        }
        one()
    }
}
obj.say()  //222
var obj = {
    x: 222,
    say:function(){
        var x = 111;
        var obj2 = {
            x: 333,
            one:()=>{ console.log(this.x)}          
        }
        obj2.one()
    }
}
obj.say()//222

var x = 111;
var obj = {
    x: 222,
    say:()=>{
        console.log(this.x)
    }
}
obj.say(); //111

var a = 1
var obj = {
    a:2,
    getAge:function(){
        var fn = ()=>this.a;
        return fn() 
    }
}
obj.getAge() //2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值