4

プロトタイプパターンを明らかにするJavaScriptを使用しており、コールバックを追加したいと思います。私は次のようなことを試みています:

http://jsfiddle.net/Qyhrb/2/

  var Refinements = function () { };

  Refinements.prototype = function () {
    Init = function () {
      $('.btn').click(Callback);
    },
    Callback = function(){
      alert('default function');
    };
    return { Init: Init, Callback : Callback };
  }();


   var refinements = new Refinements();
   refinements.Callback = function(){ alert('new method'); };
   refinements.Init();

基本的に私がやりたいのは、オブジェクトにコールバックを渡し、イベントが発生したときにそのコールバックを発生させることです。

4

4 に答える 4

5
    Init = function () {
        var refinement = this;
        $('.btn').click(refinement.Callback || Callback);
    },

フィドル

于 2012-07-20T19:10:13.330 に答える
1
Foobar = function() {
    this.callBack = function() {
        alert("Default method");
    };
}

Foobar.prototype = {
    Init: function() {
        var self = this;
        $(".btn").click(function() {
            self.callBack.call();
        });
    }
};

var foobar = new Foobar();
foobar.Init();
foobar.callBack = function() {
    alert("Boo!");
};
于 2012-07-20T19:57:48.580 に答える
1
var Refinements = function() {};

Refinements.prototype = function() {
  return {
    init: function() {
      $('.btn').click(this.callback);
    },
    callback: function() {
      alert('default function');
    }
  }
}();


var refinements = new Refinements();
refinements.callback = function() {
  alert('new method');
};
refinements.init();
于 2012-07-20T19:12:27.647 に答える
1

プロトタイプ関数を分離し、そのreturn { Init: Init, Callback : Callback };部分を削除すると、すべて正常に動作するようです。

function Refinements() {}

Refinements.prototype.Init = function() {
    $('.btn').click(this.Callback);
};

Refinements.prototype.Callback = function() {
    alert('default function');
};


var refinements = new Refinements();
refinements.Callback = function(){ alert('new method'); };
refinements.Init();​

http://jsfiddle.net/Qyhrb/8/

于 2012-07-20T19:13:23.310 に答える