2

我有一个带有函数的javascript类:

function myClass()
{
    this.myInit = function()
    {
        myObj = this;
        var id-foo = 'myId';
        jQuery('#'+id-foo).bind('click', function() { myObj.foo(id-foo); } );
    }

    this.foo = function(id) { alert(id); }
}

我只想将 DOM 元素绑定到事件(单击、dragonstart 等)并使其调用当前对象的函数(实际上是 this)。我试图直接调用 this.foo 但这不起作用,萤火虫告诉我 foo 不是一个函数。我给匿名函数的参数 id-foo 是问题吗?提前谢谢

4

2 回答 2

3

你的问题在这里:

 var id-foo = 'myId';

这不是变量的有效名称。

另请注意,如果您不在myInit.myClass

例如,这不起作用:

var obj = new myClass();
var f = obj.myInit;
f();

虽然这个应该工作:

var obj = new myClass();
obj.myInit();

示范

于 2012-10-26T08:57:51.073 回答
0

在遵循@dystroy 的回答之后,我建议您不要将自己与this关键字混淆。遵循这个模式

var myClass = function () {
    myInit: function()
    {
        myObj = this;
        var id_foo = 'myId';
        jQuery('#'+id_foo).bind('click', function() { myObj.foo(id_foo); } );
    }

    foo: function(id) { alert(id); }
}
于 2012-10-26T09:01:33.327 回答