<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 ...
例如,Web开发中的事件监听、JavaScript中的事件处理、Android中的BroadcastReceiver等都是Observer模式的实例。 在阅读《设计模式之Observer》这篇博文中,作者可能会深入解析Observer模式的实现细节,包括如何...
在深入探讨《JavaScript设计模式系统讲解与应用》的内容之前,我们先来了解一下设计模式的基本概念以及为什么它对于前端开发人员尤为重要。设计模式是一套被反复使用的、经过分类编目的、包含结构化的解决方案,用于...
基于给定的信息“JavaScript模式”,我们可以深入探讨书中所涉及的各种设计模式、编程技巧以及最佳实践。本书由Stoyan Stefanov撰写,陈新翻译,主要针对JavaScript开发者,旨在帮助他们理解并应用各种软件设计模式...
Observer模式,也称为订阅或发布-订阅模式,是软件设计模式中的行为模式之一。它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件...
3. **观察者模式(Observer)**:定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在事件驱动的JavaScript中广泛使用。 4. **装饰者模式(Decorator)**...
观察者模式(Observer Pattern)是设计模式中的一种行为模式,它允许一个对象,当其状态发生改变时,能够自动通知所有依赖它的对象。在JavaScript中,观察者模式的实现可以帮助我们构建可扩展、松耦合的系统。这篇...
《对Observer模式的深入探索与应用》 Observer模式,又称为发布-订阅(Publish-Subscribe)模式或事件驱动(Event-driven)模式,是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态...
此外,许多现代编程语言和框架,如JavaScript的事件监听、C#的委托和事件、Android的BroadcastReceiver,都采用了观察者模式的思想。 总之,观察者模式是一种强大的设计工具,它使得对象之间的交互更加灵活,同时...
JavaScript观察者模式是一种基于事件驱动的设计模式,它允许对象在状态改变时自动通知其他相关对象。这个模式在软件开发中非常常见,特别是在JavaScript这样的动态语言中,因为JavaScript的事件模型就是观察者模式的...
JavaScript 类的设计模式是一种在开发过程中遵循的一套最佳实践和结构化方法,用于创建可维护、可扩展和可重用的代码。设计模式是解决常见编程问题的经验总结,它们不是具体的代码实现,而是解决特定问题的通用解决...
### JavaScript观察者模式详解 #### 一、观察者模式概念 观察者模式(Observer Pattern)是一种行为设计模式,用于定义对象间的一种一对多依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都会得到...
在JavaScript编程中,设计模式是一种最佳实践,用于解决常见的编程问题和提高代码的可维护性。观看者模式(Observer Pattern)或称为发布-订阅模式,是这些设计模式中的一种,它提供了一种方法来实现对象之间的松...
本篇文章将深入探讨JavaScript的OOP思想,并通过实际代码示例介绍单例模式、工厂模式和观察者模式。 首先,面向对象编程的核心概念是类和对象。在JavaScript中,虽然没有传统的类定义,但可以通过构造函数来模拟类...
在实际开发中,很多框架和库也内置了观察者模式,如JavaScript中的EventEmitter(Node.js)、C#的事件和委托,以及Android中的BroadcastReceiver等。这些工具使得开发者可以更便捷地应用观察者模式,提高代码的可...
在JavaScript中,观察者模式的应用可以提升程序的可维护性和扩展性。 观察者模式主要涉及两个角色:观察者(Observer)和被观察者(Subject)。观察者负责注册到被观察者那里,当被观察者的状态发生变化时,观察者...
音乐播放器是现代数字生活中的常见元素,而在这个项目中,我们关注的是如何利用Observer模式来实现一个纯JavaScript(Vanilla JS)版本的音乐播放器。Observer模式,也称为发布-订阅模式,是一种设计模式,它定义了...
### 观察者模式(Observer Pattern) 观察者模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在JavaScript中,可以通过事件监听机制来实现。 ### ...
主要介绍了JavaScript编程设计模式之观察者模式(Observer Pattern),简单说明了观察者模式的概念、原理并结合实例形式详细给出了观察者模式的相关实现与使用技巧,需要的朋友可以参考下