gpt4 book ai didi

javascript - 在 Javascript 对象中使用带有回调的 $.getJSON()

转载 作者:数据小太阳 更新时间:2023-10-29 05:13:47 24 4
gpt4 key购买 nike

我正在尝试设置一个对象,使其具有封装的 $.getJSON 方法。这是我的设置:

function Property(price, deposit){
this.price = price;
this.deposit = deposit;
this.getMortgageData = function(){
$.getJSON('http://example.com/index?p='+this.price+'&d='+this.deposit+'&c=?', function(data){
this.mortgageData = data;
});
}
return true;
}

现在的问题似乎是我无法访问 getJSON 回调函数中的“this”,这是有道理的。

这种类型的功能是否有解决方法,或者我只是以完全错误的方式思考这个问题?我以前只真正使用过 PHP OO 编码,所以 JS OO 对我来说有点陌生。

我尝试过的其他事情是:

  function Property(price, deposit){
this.price = price;
this.deposit = deposit;
this.getMortgageData = function(){
this.mortgageData = $.getJSON('http://example.com/index?p='+this.price+'&d='+this.deposit+'&c=?', function(data){
return data;
});
}
return true;
}

不过,

var prop = new Property();
prop.getMortgageData();
// wait for the response, then
alert(prop.mortgageData.xyz); // == undefined

最佳答案

您的第一次尝试很接近,但正如您所说,您无法在回调中访问 this,因为它引用了其他内容。相反,将 this 分配给外部作用域中的另一个名称,然后访问它。回调是一个闭包,可以在外部范围内访问该变量:

function Property(price, deposit){
this.price = price;
this.deposit = deposit;
var property = this; // this variable will be accessible in the callback, but still refers to the right object.
this.getMortgageData = function(){
$.getJSON('http://example.com/index?p='+this.price+'&d='+this.deposit+'&c=?', function(data){
property.mortgageData = data;
});
}
return true;
}

关于javascript - 在 Javascript 对象中使用带有回调的 $.getJSON(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4818615/

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