javascript - js回调函数中的this什么情况下会指向调用的那个对象?

查看:88
本文介绍了javascript - js回调函数中的this什么情况下会指向调用的那个对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

代码是这样的:

    var name = 'outer';
    var obj = {
        name: 'obj',
        foo: function (arg) {
            this.run = arg;
            this.run();
        },
        bar:function (arg) {
            arg();
        }
    };
    function fx() {
        alert(this.name);
    };
    
    obj.foo(fx);//fx中的this指向obj,此时alert的结果是obj
    obj.bar(fx);//这样调用fx中的this却指向当前作用域,alert的结果却是outer
    
    

就像

$(selector).on('click',function(){
    //这里的this会指向被选中的标签,
    //而希望通过这个回调函数来操作当前作用域中的一些属性时就要另想办法
});

所以,this的指向问题是在哪决定的?

解决方案

this应该指向方法的所有者,foo方法中调用的已经是obj的run方法了

这篇关于javascript - js回调函数中的this什么情况下会指向调用的那个对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆