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要素をイベント(クリック、ドラゴンスタートなど)にバインドし、現在のオブジェクト(実際にはこれ)の関数を呼び出させたいだけです。this.foo を直接呼び出そうとしましたが、うまくいきません。firebug は foo が関数ではないことを教えてくれます。私が無名関数に与えるパラメータ id-foo は問題ですか? 事前にThx

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 に答える