js自定义事件及事件交互原理概述(二)_javascript技巧
js自定义事件(一)的目的只是让大家简单的理解自定事件是如何模拟出来的,大家不难发现会有很多缺陷,比如:
1、此事件对象只能注册一个事件,不能提供多个事件
2、注册方法没有返回的一些信息
下面我们就来解决这些问题。如下为MyEvent.js源代码:
function MyEvent(){
this.handlers={};
}
MyEvent.prototype={
addHandler:function(type,handler)
{
if(typeof this.handlers[type]=="undefined")
{
this.handlers[type]=[];
}
this.handlers[type].push(handler);
},
fire:function(event)
{if(this.handlers[event.type] instanceof Array)
{
var handlers=this.handlers[event.type];
for(var i= 0, len=handlers.length;i
handlers[i](event);
}
}
},
removeHandler:function(type,handler)
{
if(this.handlers[type] instanceof Array)
{
var handlers=this.handlers[type];
for(var i= 0, len=handlers.length;i
if(handlers[i]===handler)
{
break;
}
}
handlers.splice(i,1);
}
}
};
此类就是对第一篇的优化。
属性handler变成了handlers,变成了一个数组
addHandler()方法接受两个参数:事件类型和用于处理该事件的函数。当调用该方法时,会进行一次检查,看看handlers属性中是否已经存在一个针对该事件类型的数组
;如果没有,则创建一个新的。然后使用push()将该处理程序添加到数组的末尾。
fire()方法用于触发一个事件,该方法接受一个参数,是一个至少包含type属性的对象,不然无法确定handlers里面是否已经存在。它会通过此type去查找对应该事件类型的一组处理程序,调用各个函数,并给出event对象。因为这些都是自定义对象,所以event对象上面的其他东西可以由你自己定义。
removeHandler()方法时addHandler()的辅助,它们接受的参数一样:事件的类型和事件处理程序。这个方法搜索事件处理程序的数组找到要删除的处理程序的位置。如果找到了,则使用break操作符退出循环。然后使用splice()方法将该项目从数组中删除。
这里使用方式我们换一种比较长用的形式,现在据我说知很多产品在使用事件上有两种方式,一种是直接继承(js本省没有此概念,不过我们可以通过原型链模拟出继承的效果,此处不做详细解释)此事件对象,那么就会拥有了这些行为,不过此方法比较局限,另一种方式更常用一些,就是需要使用事件的类上面创建一个属性用于存放此对象。如:子相同目录下再创建一个Student.js文件,里面的代码如下:
function Student(name)
{
this.myEvent=new MyEvent();
this.name=name;
}
Student.prototype={
setName:function(name)
{
var eventStart={
type:"changeNameStart",
newName:name,
oldName:this.name
};
this.myEvent.fire(eventStart);
this.name=name;
}
}
这里有一个学生类,构造函数里面初始化一个MyEvent对象作为属性,通过参数初始化name属性。
提供一个方法setName用于改变名字,不过在改变名字之前设置了可能触发事件changNameStart的监听。
创建一个html页面,放于同个目录下,代码如下:
这样使用起来就会很方便,也是一种常用的使用方式。
一般在真正的项目里面使用使用事件时我们还需要做一些优化,比如:
1、用户并不知道我们提供了哪些事件,从代码来看好像什么事件都可以添加到handlers里面,但是真正起效果的(我们设置fire()方法的地方)事件我们并不能从代码里面很直观的看出来,一般做产品,在这方面都需要再做考虑。
2、有没有发现fire的参数event好像没用固定,在大兴项目里面,最好event也做成一个类型,在fire的地方就比较方便使用一些,event可能会有很多种类型,那时可能fire里面会出现一些判定了。
希望对初入js事件的读者有所帮助,互相交流。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Dans le système Win11, nous pouvons permettre à plusieurs moniteurs d'utiliser le même système et de fonctionner ensemble en activant l'interaction sur écran partagé. Cependant, de nombreux amis ne savent pas comment activer l'interaction sur écran partagé. les paramètres du système. Ce qui suit est Levez-vous et étudiez. Comment ouvrir l'interaction en écran partagé dans Win11 1. Cliquez sur le menu Démarrer et recherchez "Paramètres" 2. Recherchez ensuite les paramètres "Système". 3. Après avoir saisi les paramètres système, sélectionnez « Affichage » à gauche. 4. Sélectionnez ensuite « Étendre ces affichages » dans les multiples affichages à droite.

Compétences en développement Vue3+TS+Vite : Comment interagir avec l'API back-end Introduction : Dans le développement d'applications Web, l'interaction des données entre le front-end et le back-end est un lien très important. En tant que framework front-end populaire, Vue3 propose de nombreuses façons d'interagir avec les API back-end. Cet article expliquera comment utiliser l'environnement de développement Vue3+TypeScript+Vite pour interagir avec l'API back-end et approfondira la compréhension grâce à des exemples de code. 1. Utilisez Axios pour envoyer des requêtes.

Vue.js est un framework JavaScript populaire qui offre de nombreuses fonctionnalités pratiques, il est donc très utile lors du développement d'applications Web. Le système d'événements personnalisés de Vue.js le rend plus flexible et permet une meilleure réutilisation du code grâce au déclenchement et à la gestion des événements de composants. Dans cet article, nous verrons comment utiliser des événements personnalisés avec Vue.js. La base des événements personnalisés dans Vue.js Dans Vue.js, nous pouvons écouter les événements DOM via la directive v-on. Par exemple,

La façon dont uniapp implémente l'utilisation de JSBridge pour interagir avec le natif nécessite des exemples de code spécifiques 1. Introduction au contexte Dans le développement d'applications mobiles, il est parfois nécessaire d'interagir avec l'environnement natif, par exemple en appelant certaines fonctions natives ou en obtenant des données natives. En tant que cadre de développement d'applications mobiles multiplateforme, uniapp offre un moyen pratique d'interagir avec des appareils natifs, en utilisant JSBridge pour communiquer. JSBridge est une solution technique permettant au front-end d'interagir avec le mobile natif.

Méthodes d'interaction PHP et JavaScript et FAQ Avec le développement rapide d'Internet, les pages Web sont devenues la principale plate-forme permettant aux utilisateurs d'obtenir des informations et de communiquer. PHP et JavaScript sont les deux langages les plus couramment utilisés pour développer des pages Web. Ils ont tous leurs propres avantages et scénarios applicables, et dans le processus de développement de grands sites Web, la combinaison des deux élargira les capacités de travail des développeurs. Cet article présentera les méthodes d'interaction entre PHP et JavaScript et les réponses aux questions fréquemment posées. PHP et JavaScript

Avec le développement rapide d'Internet et l'évolution rapide des technologies de l'information, le développement front-end et back-end, deux domaines informatiques importants, a également fait de grands progrès au cours des dernières décennies. Cet article explorera l'historique du développement front-end et back-end, analysera les tendances de développement actuelles et attendra avec impatience les orientations de développement futures. 1. L'histoire du développement front-end et back-end Aux premiers stades d'Internet, le développement de sites Web se concentrait principalement sur la présentation du contenu et le travail de développement front-end principalement axé sur des technologies telles que HTML, CSS et JavaScript. pour atteindre les fonctionnalités de base de la page.

Comment utiliser l'interface Enterprise WeChat pour interagir avec PHP pour les données. Enterprise WeChat est une plate-forme importante pour la communication et la collaboration internes au sein de l'entreprise. Les développeurs peuvent réaliser une interaction de données avec Enterprise WeChat via l'interface Enterprise WeChat. Cet article explique comment utiliser le langage PHP pour appeler l'interface WeChat d'entreprise afin de réaliser la transmission et le traitement des données. Tout d’abord, vous devez créer une application WeChat d’entreprise et obtenir les CorpID, Secret et AgentID correspondants. Ces informations peuvent être trouvées dans les « Applications et mini-programmes » du backend de gestion Enterprise WeChat. Ensuite, je

Utilisation et scénarios courants des événements personnalisés Vue Vue.js est un framework JavaScript populaire pour la création d'interfaces utilisateur. Dans Vue, nous pouvons implémenter la communication entre les composants via des événements personnalisés. Les événements personnalisés sont l'une des fonctionnalités très utiles de Vue, nous permettant de transmettre des données entre différents composants et de déclencher des comportements spécifiques. Cet article présentera l'utilisation et les scénarios courants des événements personnalisés dans Vue, et fournira des exemples de code spécifiques. 1. Utilisation de base des événements personnalisés Dans Vue, nous pouvons
