gpt4 book ai didi

javascript - 如何在不在 javascript 中使用 that 或 self 的情况下在函数内部访问 this?

转载 作者:行者123 更新时间:2023-11-30 17:25:36 27 4
gpt4 key购买 nike

我试图用 javascript 编写一些 OOP,我偶然发现了一个问题,我确信我稍后会在我的代码中遇到这个问题,并希望现在就处理它。

例如拿这段代码:

var FeedClass = function(){

this.init = function(){
this.loadItems();
},
this.loadItems = function(){
var that = this; // heres my problem
function inner(){
that.startLoading();
}
inner();
},
this.startLoading = function(){
alert("started Loading");
}

this.init();
};

var feed = new FeedClass();

问题是我要使用很多调用“this”的内部函数,如果我一直在里面写var that = this,我的代码会很乱每个范围。我可以使用另一种模式或绕过它的方法吗?

最佳答案

您可以使用 call method为函数设置上下文:

this.loadItems = function(){
function inner(){
this.startLoading();
}
inner.call(this);
},

apply method工作方式类似,区别在于您在调用中指定参数的方式。

您还可以使用 bind method设置函数的上下文。这允许您将上下文绑定(bind)到函数并将函数引用传递给稍后调用:

this.loadItems = function(){
function inner(){
this.startLoading();
}
var i = inner.bind(this);
i();
},

注意:IE 8 或更早版本不支持 bind 方法。

关于javascript - 如何在不在 javascript 中使用 that 或 self 的情况下在函数内部访问 this?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24356259/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com