我对JavaScript比较陌生,最近开始学习各种设计模式。我了解观察者设计模式是如何工作的,但是我不太了解何时使用它们。看一下这种相对简单的观察者模式:
function Observer(){
this.listeners = {};
}
Observer.prototype.add = function(event,func){
if(!this.listeners[event]){
this.listeners[event] = [];
}
this.listeners[event].push(func)
}
Observer.prototype.remove = function(event, func){
var ref = this.listeners[event],
var len = ref.length;
for(var i =0; i<len; i++){
if(listener===func){
ref.splice(i,1)
}
}
}
Observer.prototype.trigger = function(event){
var ref = this.listeners[event];
var len = ref.length;
for(var i=0; i<len; len++){
var listener = ref[i];
if(typeof listener == 'function') {listener()}
}
}
var observer = new Observer();
var observerFunc = function(){console.log('notified')};
observer.add("test",observerFunc)
observer.trigger("test") // logs "notified"
我的问题是,使用上面的观察者模式并使用jQuery做下面的事情的好处是什么?第二种方法的局限性是什么?它们都在事件发生时调用某些功能,但是我感觉我缺少一个基本功能。
var observer = {
observerfunction : function(){console.log('Observer notified')}
}
$('selector').on("observerFunction", function(){
observer.observerfunction();
})
$('selector').trigger('observerFunction');