<script>
Array.prototype.append = function(obj, nodup) {
if(!(nodup && this.contains(obj))) {
this[this.length] = obj;
}
}
Array.prototype.contains = function(obj) {
return (this.indexOf(obj)>=0);
}
Array.prototype.indexOf = function(obj) {
var result = -1;
for(var i=0; i<this.length; i++) {
if(this[i]==obj) {
result = i;
break;
}
}
return result;
}
Array.prototype.clear = function() {
this.length = 0;
}
Array.prototype.insertAt = function(index, obj) {
this.splice(index, 0, obj);
}
Array.prototype.removeAt = function(index) {
this.splice(index, 1);
}
Array.prototype.remove = function(obj) {
var index = this.indexOf(obj);
if(index>=0)
this.removeAt(index);
}
</script>
<script>
Router = function(el, e) {
this.lsnrs = [];
el.router = this;
el[e] = Router.callback;
}
Router.prototype.addListener = function(lsnr, argArray) {
lsnr.argArray = argArray;
this.lsnrs.append(lsnr, true);
}
Router.prototype.removeListener = function(lsnr) {
this.lsnrs.remove(lsnr);
}
Router.prototype.notify = function(e) {
for(var i=0; i<this.lsnrs.length; i++)
this.lsnrs[i].apply(e.srcElement, this.lsnrs[i].argArray);
}
Router.callback = function() {
var router = this.router;
router.notify(window.event);
}
function test1(a) {
alert(a)
}
function test2(a,b) {
alert(a+b)
}
function test3(a,b,c) {
alert(a+b+c)
}
window.onload = function() {
var el = document.getElementById("bt");
var router = new Router(el, "onclick")
router.addListener(test1,[1]);
router.addListener(test2,[1,2]);
router.addListener(test3,[1,2,3]);
router.removeListener(test2);
}
</script>
<input id="bt" type="button" value="button" />
分享到:
相关推荐
Observer模式,也被称为“发布-订阅”模式,是软件设计模式中的行为模式之一。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Observer模式是实现...
9. 观察者模式(Observer Pattern): 观察者模式是用于对对象的状态进行观察,并且当它发生变化时能得到通知的方法。它的主要作用是使对象之间的耦合降低,提高系统的灵活性和可扩展性。 10. 命令模式(Command ...
然后,集中介绍了很多流行的设计模式在JavaScript中的应用,包括Module(模块)模式、Observer(观察者)模式、Facade(外观)模式和Mediator(中介者)模式;最后,还探讨了模块化的JavaScript模式、jQuery及其插件...
### JavaScript设计模式详解:单例模式与观察者模式 #### 一、单例模式 **定义**:单例模式是一种常用的软件设计模式,其目的是确保某个类只有一个实例,并且能够提供一个全局访问点来访问该实例。在JavaScript中...
例如,Web开发中的事件监听、JavaScript中的事件处理、Android中的BroadcastReceiver等都是Observer模式的实例。 在阅读《设计模式之Observer》这篇博文中,作者可能会深入解析Observer模式的实现细节,包括如何...
### JavaScript设计模式知识点详解 #### 一、设计模式概述与JavaScript的关系 设计模式是一种在特定情境下被广泛接受的问题解决方案。对于软件开发人员而言,掌握设计模式能够帮助他们更好地解决问题,提高代码的...
在深入探讨《JavaScript设计模式系统讲解与应用》的内容之前,我们先来了解一下设计模式的基本概念以及为什么它对于前端开发人员尤为重要。设计模式是一套被反复使用的、经过分类编目的、包含结构化的解决方案,用于...
基于给定的信息“JavaScript模式”,我们可以深入探讨书中所涉及的各种设计模式、编程技巧以及最佳实践。本书由Stoyan Stefanov撰写,陈新翻译,主要针对JavaScript开发者,旨在帮助他们理解并应用各种软件设计模式...
Observer模式,也称为订阅或发布-订阅模式,是软件设计模式中的行为模式之一。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件...
观察者模式(Observer) 观察者模式是一种对象行为型设计模式。它定义了对象之间的一对多依赖关系,当一个对象改变状态时,所有依赖者都会收到通知并自动更新。 #### 4. 发布-订阅模式(Publish/Subscribe) 发布-...
JavaScript设计模式与开发实践是深入理解JavaScript编程技巧和优化代码结构的重要资源。设计模式是软件工程中的最佳实践,它们提供了解决常见问题的通用解决方案。在JavaScript中,设计模式可以帮助我们编写可维护、...
3. **观察者模式(Observer)**:定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在事件驱动的JavaScript中广泛使用。 4. **装饰者模式(Decorator)**...
### JavaScript设计模式详解 #### 一、引言 在软件工程领域,设计模式是指针对某一类问题的最佳实践或解决方案的总结。对于JavaScript开发者而言,掌握常见的设计模式不仅可以提高编程效率,还能增强代码的可维护...
观察者模式(Observer Pattern)是设计模式中的一种行为模式,它允许一个对象,当其状态发生改变时,能够自动通知所有依赖它的对象。在JavaScript中,观察者模式的实现可以帮助我们构建可扩展、松耦合的系统。这篇...
《对Observer模式的深入探索与应用》 Observer模式,又称为发布-订阅(Publish-Subscribe)模式或事件驱动(Event-driven)模式,是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态...
此外,许多现代编程语言和框架,如JavaScript的事件监听、C#的委托和事件、Android的BroadcastReceiver,都采用了观察者模式的思想。 总之,观察者模式是一种强大的设计工具,它使得对象之间的交互更加灵活,同时...
JavaScript观察者模式是一种基于事件驱动的设计模式,它允许对象在状态改变时自动通知其他相关对象。这个模式在软件开发中非常常见,特别是在JavaScript这样的动态语言中,因为JavaScript的事件模型就是观察者模式的...
JavaScript 类的设计模式是一种在开发过程中遵循的一套最佳实践和结构化方法,用于创建可维护、可扩展和可重用的代码。设计模式是解决常见编程问题的经验总结,它们不是具体的代码实现,而是解决特定问题的通用解决...