gpt4 book ai didi

Javascript ,范围问题...不是很有经验的 javascript

转载 作者:行者123 更新时间:2023-11-30 10:50:14 25 4
gpt4 key购买 nike

请原谅我缺乏经验,但这就是问题所在,我有一些 2 个函数,其中一个调用 .getJSON,我需要从第一个函数的 getJSON 回调中调用第二个函数。我遇到了很多麻烦。

这是正在发生的事情的简化版本。

MyDialog.Widget.prototype._myFunction1 = function(data) {
var self = this;

var renderEntry = function(tr,booltf) {
$('<a href="javascript:{}">&nbsp;</a>')
.addClass("iconbutton")
.appendTo(tr.insertCell(0))
.click(function() {
$.getJSON(
"/command/button",
null,
function(data) {
self.myFunction2(); //self isn't in scope?
//this.myFunction2(); //this is actually 'this' for XHR request
},
"json"
);
});
//more code here (including the invoking of renderEntry()
}

MyDialog.Widget.prototype.myFunction2 = function()
{
//Ton of code
}

问题出在 .getJSON 的回调函数中,我想调用 myFunction2 但无法调用它...使用“this.myFunction2()”我正在尝试访问“myFunction2”在 XHR 请求中(这是我通过 firebug 看到的),并且使用我之前创建的 var 'self' 也不起作用,因为它不在我认为的范围内,firebug 不显示任何变量 'self' 当在回调函数中,当然当我尝试时它不起作用。

有什么想法吗?还需要详细说明吗?

最佳答案

您的代码在范围方面没有问题。 self 在范围内,并按照您的意愿引用 this。您的调试器可能不会显示它,因为它不在 local 函数范围内,但这并不意味着它不会被正确解析。

一个更简单的案例可以很容易地证明如下:

var foo = {
fn: function(){ console.log('Called!'); },
invoker: function(){
var self = this,
local = function(){ setTimeout(function(){
setTimeout(function(){ self.fn(); }, 1000);
}, 1000); };
local();
}
};

foo.invoker();
  • 确保您的请求成功。
  • 删除 “json” 参数($.getJSON 只有 3 个参数)。
  • 发布更多代码。

关于Javascript ,范围问题...不是很有经验的 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850171/

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