Javascript 带JQuery的变量范围

Javascript 带JQuery的变量范围,javascript,jquery,Javascript,Jquery,我有一个Javascript对象,它有一个对服务器的jquery ajax调用来填充它的一个属性: function Busqueda(contenedor){ var datosPost = "someData"; var resultados = undefined; var that = this; this.buscar = function(){ jQuery.ajax({ type: "POST",

我有一个Javascript对象,它有一个对服务器的jquery ajax调用来填充它的一个属性:

function Busqueda(contenedor){
    var datosPost = "someData";

    var resultados = undefined;
    var that = this;

    this.buscar = function(){
         jQuery.ajax({
            type: "POST",
            dataType: "json",
            url: "phpFile.php",
            data: datosPost,
            success: function (data){
                if(data.error != 0){
                    alert(data.errorTxt);
                } else {
                    that.resultados = data.resultados;
                }
            }
        });
    }
}
ajax调用应该填充属性“resultados”。但是,在运行“buscar”方法之后,resultados仍然没有定义

另外,我在success方法中调试了“that.resultados”,这是Busqueda的属性


发生了什么事?

你为什么要使用这个.resultados?你是说“这个”吗?应该是“resultados”


你从不展示你是如何使用它的。您是否正确地创建了一个实例

var o = new Busqueda();
// ... after the ajax success
console.log(o.resultados)

如果您不使用
new
,那么
this
(和
that
)将是
窗口,而不是
o

,因为success()是一个回调,他需要使用'that',因为'this'将绑定到窗口而不是Busqueda。
resultados
不是
Busqueda
实例的成员。它是一个私有变量,通过简单赋值而不是任何this/that取消引用来访问。在没有this/that的情况下尝试过,但不起作用。我的代码基于本文:var-busqueda=new-busqueda($('busquedaPersona');busqueda.buscar();
var o = new Busqueda();
// ... after the ajax success
console.log(o.resultados)