Javascript函数实例和调用

时间:2013-11-09 12:55:56

标签: javascript jquery html

我使用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");
}

但我有错误

对象#没有方法'动作'

有人能帮助我吗?

1 个答案:

答案 0 :(得分: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();

演示:Fiddle