Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript原型-添加回调_Javascript_Jquery - Fatal编程技术网

javascript原型-添加回调

javascript原型-添加回调,javascript,jquery,Javascript,Jquery,我正在使用javascript原型模式,我想添加一个回调。我正在尝试类似的东西: 本质上,我想做的是将回调传递到对象中,并在事件发生时引发该回调 Init = function () { var refinement = this; $('.btn').click(refinement.Callback || Callback); }, 当我分离出原型函数,并删除返回{Init:Init,Callback:Callback}工件似乎一切正常 f

我正在使用javascript原型模式,我想添加一个回调。我正在尝试类似的东西:

本质上,我想做的是将回调传递到对象中,并在事件发生时引发该回调

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

当我分离出原型函数,并删除
返回{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();​

您遇到了什么问题?你希望这段代码做什么而不是做什么?我希望警报(“新方法”)在btn上触发。单击而不是警报(“默认函数”)。我更喜欢这样的结构:-保持回调函数私有,并在
init()
中重写它对我来说更干净。@Christoph-是的,只要它不是以后可能需要更改的内容,就更干净了。它更希望保持回调私有并在init函数中重写它:
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();
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();​
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!");
};