1

我使用 Javascript,我想为授权创建类。

我的代码是

function Auth() {
    this.action;
    this.run = function() {
        $("#auth-dialog-id").dialog({
            width: 400,
            height: 250,
            modal: true,
            buttons: {
                OK: function() {
                    this.action();
                    $(this).dialog("close");
                },
                Cancel: function() {
                    $(this).dialog("close");
                }
            }

        });
    };
}

称呼

    auth = new Auth();
    auth.action = a;
    auth.run();
}
function a() {
    alert("test");
}

但我有错误

对象 # 没有方法“动作”

有谁能够帮我?

4

1 回答 1

0

由于您已更正this.action = a问题,因此问题在于OK按钮回调上下文。按钮点击回调内部this不引用auth实例。

这里一种可能的解决方案是使用如下所示的闭包变量

function Auth() {
    var self = this;
    this.run = function () {
        $("#auth-dialog-id").dialog({
            width: 400,
            height: 250,
            modal: true,
            buttons: {
                OK: function () {
                    self.action();
                    $(this).dialog("close");
                },
                Cancel: function () {
                    $(this).dialog("close");
                }
            }

        });
    };
}

auth = new Auth();
auth.action = a;
auth.run();

演示:小提琴

于 2013-11-09T13:06:08.400 回答