使用ajax jquery设置prototype属性

时间:2012-12-05 12:08:44

标签: javascript jquery

使用ajax使用带有setter的Class时遇到问题。这是条件。

var MyClass = Class.create();
MyClass.prototype = {
    myAttr:0,
    setMyAttr: function(){
        jQuery.ajax({
            url:'data.php',
            success:function(data) {
                //set myAttr here
            }
        });
    }
}

我想在成功函数中设置myAttr,怎么做?谢谢。 :d

2 个答案:

答案 0 :(得分:2)

你还没有说Class.create是什么(JavaScript本身没有),但我认为这个问题并不重要。

我假设您要在实例上设置myAttr,而不是原型(但如果我错了,请参见下文)。最简单的方法是利用success回调已经是对setMyAttr调用上下文的闭包这一事实,因此您将变量设置为this(因为{ {1}} this回调中的{1}}会有所不同,并使用:

success

有关闭包的更多信息:Closures are not complicated

但如果我错了,你确实想要更新原型:

var MyClass = Class.create();
MyClass.prototype = {
    myAttr:0,
    setMyAttr: function(){
        var self = this;            // <== Set the variable
        jQuery.ajax({
            url:'data.php',
            success:function(data) {
                self.myAttr = data; // <== Use it
            }
        });
    }
};

(请注意原型分配结束时的var MyClass = Class.create(); MyClass.prototype = { myAttr:0, setMyAttr: function(){ jQuery.ajax({ url:'data.php', success:function(data) { MyClass.prototype.myAttr = data; } }); } }; 。我强烈主张不依赖于自动分号插入的恐怖。)

答案 1 :(得分:0)

您可以执行以下操作:

        success:function(data) {
            //set myAttr here
            MyClass.prototype.myAttr = data;
        }