gpt4 book ai didi

Javascript SetTimeout 变量访问

转载 作者:行者123 更新时间:2023-11-28 20:14:48 24 4
gpt4 key购买 nike

我已经查看了一些其他示例,但对于我想要做的事情来说,它们都复杂得多,并且不明白如何将它们应用到我的问题中。所以这是我希望很简单的问题:

function myObject(){
this.aVar = 0;

var aFunction = function(aParam){
console.log(aParam);
}

this.theCallerFunction = function(){
setTimeout(function(){ aFunction(this.aVar)},5000);
}

}

问题是在 aFunction 内部,参数值是“未声明”,而不是 0,因此我打印“未声明”。有人可以给我一个简单的解决方案并解释这里发生的事情吗?

多年来我一直在研究面向对象的 C# 和 Java,而 javascript 中的 OO 正在让我着迷。

最佳答案

你有几个选择。您可以在现代浏览器中使用 .bind() 或将 this 放入您可以访问的变量中:

function myObject(){
this.aVar = 0;

var aFunction = function(aParam){
console.log(aParam);
}

// save copy of this that can be accessed from callback
var self = this;
this.theCallerFunction = function(){
setTimeout(function(){ aFunction(self.aVar)},5000);
}
}

关于Javascript SetTimeout 变量访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19348295/

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