1

我在使用 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

4

2 回答 2

2

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

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

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;
            }
        });
    }
};

(注意;原型分配的末尾。我强烈主张不要依赖自动分号插入的恐怖。)

于 2012-12-05T12:11:27.127 回答
0

您可以执行以下操作:

        success:function(data) {
            //set myAttr here
            MyClass.prototype.myAttr = data;
        }
于 2012-12-05T12:12:05.540 回答