首页 > Windows开发 > 详细

怎样解决多层this指向全局对象window的问题

时间:2019-10-12 12:04:46      阅读:83      评论:0      收藏:0      [点我收藏+]

如下所示, 得到的结果里面, 第二个this指向的是window这个全局对象而非f2, 原因就是多层this造成的指向不明引起的.

var a = {
    f1: function(){
        console.log(this);
        var f2 = function(){
            console.log(this);
        };
        f2();
    }
};

a.f1(); 
// Object
// Object

 

上面这段代码的实际运行效果其实是这样的: 

var test = function(){
    console.log(this);
}

var a = {
    f1: function(){
        console.log(this);
        var f2 = test;
        f2();
    }
};

a.f1(); 
// Object
// Object

 

但我们需要的效果是他指向a对象, 而不是window, 解决方法是通过另一个变量将this固定住:

var a = {
    f1: function(){
        console.log(this);
        var self = this;
        var f2 = function(){
            console.log(self);
        };
        f2();
    }
};

a.f1(); 
// Object
// Object

 

这里使用了一个变量: self, 将a对象的this固定住, 利用函数作用域可以访问父级作用域内变量这一特点, 实现this的传递.

怎样解决多层this指向全局对象window的问题

原文:https://www.cnblogs.com/aisowe/p/11660388.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!