我有以下简单的 JavaScript“类”:

function Person(params)
{
    this.name = params.name;
}
Person.prototype.SayHi = function()
{
    alert(this.name + " says hi");
}

当我就地运行它时,这按预期工作。运行以下代码会给我一个弹出窗口,上面写着“Alice say hi”:
var alice = new Person({name:"Alice"});
alice.SayHi();

但是当我尝试将它分配给按钮事件时,它不起作用:
$("#AliceOnClick").on("click", alice.SayHi);
$("#BobOnClick").on("click", bob.SayHi);

似乎调用了 SayHi 函数,但 name 字段为空。

最小工作示例:

http://jsfiddle.net/AKHsc/1/

我究竟做错了什么?

最佳答案

只需在匿名函数中运行它即可调用它。由于您在对象上调用方法,因此需要括号。

$(function(){
    $("#AliceOnClick").on("click", function() {
        alice.SayHi();
    });
    $("#BobOnClick").on("click", function() {
        bob.SayHi();
    });
});

在这里工作 Fiddle

关于javascript - 如何从 DOM 事件调用 JavaScript 类实例方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18000261/

10-12 06:45