0

次のコードがあります。リンクの上にホバーを使用すると、コンソールが表示されますthis

var Mod = function () {
    $('.link').hover(this.hover, this.out);
};

Mod.prototype = function () {
    var hover = function () {
        console.log(this);
    },

    out = function () {
        console.log(this);
    };

    return {
        hover: hover,
        out: out
    }
}();

上記のコードでは要素をthis参照して$('.link')いますが、これを現在のオブジェクトに使用したいと考えています。これを実現するために、コンストラクターを次のように変更できます。

var Mod = function () {
    var self = this;
    $('.link').hover(function () {
        self.hover();
    }, function () {
        self.out();
    });
};

これは正常に動作しますが、コンストラクターが乱雑に見えます。2番目の方法は、jquery$.proxy()を再度使用することです。これにより、コンストラクターが乱雑に見えます。

私の質問は、上記の最初の例で現在使用しているように、現在のオブジェクトへの参照をオブジェクト内の残りの関数に渡すにはどうすればよいですか?thisjquery's hover function

4

2 に答える 2