ホームページ ウェブフロントエンド jsチュートリアル JSカスタムイベントの概要とイベントインタラクションの原則(2)_JavaScriptスキル

JSカスタムイベントの概要とイベントインタラクションの原則(2)_JavaScriptスキル

May 16, 2016 pm 05:42 PM
交流 カスタムイベント

js カスタム イベント (1) の目的は、カスタム イベントがどのようにシミュレートされるかを誰もが簡単に理解できるようにすることです。次のような多くの欠陥があることは容易にわかります。
1. このイベント オブジェクトは 1 つしか登録できません。複数のイベントを提供します
2. 登録メソッドが一部の情報を返しません

以下でこれらの問題を解決しましょう。以下は MyEvent.js のソース コードです:

コードをコピー コードは次のとおりです:

function MyEvent() {
this.handlers={};
}
MyEvent.prototype={
addHandler:function(type,handler)
{
if(typeof this.handlers[タイプ] == "未定義")
{
this.handlers[タイプ]=[];
}
this.handlers[タイプ].push(handler); >},
fire:function(event)
{if(this.handlers[event.type] 配列のインスタンス)
{
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] 配列のインスタンス)
{
var handlers=this.handlers[type]
for(var) i= 0, len= handlers.length;i{
if(handlers[i]===handler)
{
break;
handlers.splice(i,1);
}
}
このタイプは最初の記事の最適化です。
属性ハンドラーはハンドラーになり、配列になります。
addHandler() メソッドは、イベント タイプとイベントの処理に使用される関数という 2 つのパラメーターを受け取ります。このメソッドが呼び出されると、ハンドラー属性にこのイベント タイプの配列
がすでに存在するかどうかがチェックされ、存在しない場合は新しい配列が作成されます。次に、push() を使用して、そのハンドラーを配列の末尾に追加します。

fire() メソッドは、イベントをトリガーするために使用されます。このメソッドは、少なくとも type 属性を含むオブジェクトであるパラメーターを受け取ります。それ以外の場合は、ハンドラーが既に存在するかどうかを判断できません。このタイプを使用して、イベント タイプに対応する一連のハンドラーを検索し、各関数を呼び出し、イベント オブジェクトを与えます。これらはカスタム オブジェクトであるため、イベント オブジェクトの他の内容をユーザーが定義できます。
removeHandler() メソッドは、addHandler() の補助です。イベントのタイプとイベント ハンドラーという同じパラメータを受け入れます。このメソッドは、イベント ハンドラーの配列を検索して、削除するハンドラーの場所を見つけます。見つかった場合は、break 演算子を使用してループを終了します。次に、項目は splice() メソッドを使用して配列から削除されます。

ここでの使用法を、より長く使用されている形式に変更しましょう。私の知る限り、多くの製品にはイベントを使用する 2 つの方法があります。1 つは直接継承です (この地域ではこの概念はありません)。プロトタイプ チェーン (ここでは詳しく説明しません) を介して継承の効果をシミュレートすることで、このイベント オブジェクトはこれらの動作を行うことができますが、この方法はより限定的であり、次の方法を使用してクラス上に作成する方法がより一般的です。このオブジェクトを保持するプロパティ。例: 同じディレクトリに Student.js ファイルを作成します。内部のコードは次のとおりです:




コードをコピー


コード
関数 Student(name) { this.myEvent=new MyEvent(); this.name=name; Student.prototype={ setName:function(name) {
var eventsStart={
type:"changeNameStart",
newName:name,
oldName:this.name
};
this.myEvent.fire(eventStart);
this.name=name;
}
} ここに学生クラスがあり、 MyEvent オブジェクトはコンストラクターで Attribute として初期化され、パラメーターを通じて name 属性を初期化します。

名前を変更するメソッド setName を提供しますが、名前を変更する前に、イベントchangeNameStartをトリガーする可能性のあるリスナーが設定されます。
HTML ページを作成し、同じディレクトリに配置します。 コードは次のとおりです。




コードをコピーします


は次のとおりです:







;/html>


これは非常に便利で、一般的な使用方法でもあります。
通常、実際のプロジェクトでイベントを使用する場合は、次のような最適化を行う必要があります。
1. コードからは、どのようなイベントもハンドラーに追加できるように見えます。 . ですが、実際に影響を与えるイベント (fire() メソッドを設定する場所) はコードからは直感的にわかりません。通常、製品を作成する場合は、この点を考慮する必要があります。

2. Daxing プロジェクトでは、イベントを Fire プレイスで使用する方が便利であることがわかりました。さまざまな種類のイベントが存在する可能性があり、その場合、火の中でいくつかの判断が行われる可能性があります。
js イベントに初めて参加する読者同士のコミュニケーションに役立つことを願っています。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

win11 で分割画面インタラクションを有効にする win11 で分割画面インタラクションを有効にする Dec 25, 2023 pm 03:05 PM

win11 システムでは、画面分割インタラクションをオンにすることで、複数のモニターが同じシステムを使用して一緒に操作できるようにすることができます。しかし、多くの友人は、画面分割インタラクションをオンにする方法を知りません。実際には、画面分割インタラクションを有効にする方法を知りません。システム設定 以下は「起きて勉強してください」です。 win11 で分割画面インタラクションを開く方法 1. スタート メニューをクリックし、[設定] を見つけます。 2. そこで [システム] 設定を見つけます。 3. システム設定を入力したら、左側の「ディスプレイ」を選択し、右側の複数のディスプレイで「これらのディスプレイを拡張する」を選択します。

Vue3+TS+Vite 開発スキル: バックエンド API と対話する方法 Vue3+TS+Vite 開発スキル: バックエンド API と対話する方法 Sep 08, 2023 pm 06:01 PM

Vue3+TS+Vite 開発スキル: バックエンド API と対話する方法 はじめに: Web アプリケーション開発では、フロントエンドとバックエンド間のデータ対話は非常に重要なリンクです。人気のあるフロントエンド フレームワークとして、Vue3 にはバックエンド API と対話するためのさまざまな方法があります。この記事では、Vue3+TypeScript+Vite 開発環境を使用してバックエンド API を操作する方法を紹介し、コード例を通じて理解を深めます。 1. Axios を使用してリクエストを送信します。

VUE3 基本チュートリアル: Vue.js を使用したカスタム イベント VUE3 基本チュートリアル: Vue.js を使用したカスタム イベント Jun 15, 2023 pm 09:43 PM

Vue.js は、多くの便利な機能を提供する人気の JavaScript フレームワークであり、Web アプリケーションを開発する際に非常に役立ちます。 Vue.js のカスタム イベント システムにより柔軟性が高まり、コンポーネント イベントの起動と処理を通じてコードの再利用性が向上します。この記事では、Vue.js でカスタム イベントを使用する方法について説明します。 Vue.js のカスタム イベントの基礎 Vue.js では、v-on ディレクティブを通じて DOM イベントをリッスンできます。例えば、

uniapp 実装は JSBridge を使用してネイティブと対話する方法 uniapp 実装は JSBridge を使用してネイティブと対話する方法 Oct 20, 2023 am 08:44 AM

uniapp が JSBridge を使用してネイティブと対話する方法を実装するには、特定のコード例が必要です。 1. 背景の紹介 モバイル アプリケーション開発では、ネイティブ関数の呼び出しやネイティブ データの取得など、ネイティブ環境と対話する必要がある場合があります。クロスプラットフォームのモバイル アプリケーション開発フレームワークとして、uniapp は、通信に JSBridge を使用して、ネイティブ デバイスと対話するための便利な方法を提供します。 JSBridge は、フロントエンドがモバイル ネイティブ エンドと対話するための技術ソリューションです。

エンタープライズ WeChat インターフェイスを使用して PHP と対話してデータを取得する方法 エンタープライズ WeChat インターフェイスを使用して PHP と対話してデータを取得する方法 Jul 05, 2023 am 09:00 AM

Enterprise WeChat インターフェイスを使用して PHP とデータをやり取りする方法。Enterprise WeChat は、企業内の内部通信とコラボレーションのための重要なプラットフォームです。開発者は、Enterprise WeChat インターフェイスを通じて Enterprise WeChat とのデータやり取りを実現できます。この記事では、PHP 言語を使用してエンタープライズ WeChat インターフェイスを呼び出し、データの送信と処理を実現する方法を紹介します。まず、エンタープライズ WeChat アプリケーションを作成し、対応する CorpID、Secret、および AgentID を取得する必要があります。この情報は、Enterprise WeChat 管理バックエンドの「アプリケーションとミニ プログラム」にあります。次に、私は

PHP および JavaScript を操作するための方法と FAQ PHP および JavaScript を操作するための方法と FAQ Jun 08, 2023 am 11:33 AM

PHP と JavaScript の対話方法と FAQ インターネットの急速な発展に伴い、Web ページは人々が情報を取得しコミュニケーションするための主要なプラットフォームになりました。 PHP と JavaScript は、Web ページの開発に最もよく使用される 2 つの言語です。これらにはそれぞれ独自の利点と適用可能なシナリオがあり、大規模な Web サイトの開発プロセスでは、この 2 つを組み合わせることで開発者の作業能力が拡張されます。この記事では、PHP と JavaScript の対話方法とよくある質問への回答を紹介します。 PHP と JavaScript

フロントエンド開発とバックエンド開発の開発経緯と動向展望 フロントエンド開発とバックエンド開発の開発経緯と動向展望 Mar 26, 2024 am 08:03 AM

インターネットの急速な発展と情報技術の急速な変化に伴い、フロントエンド開発とバックエンド開発という 2 つの重要な IT 分野も、過去数十年で大きな進歩を遂げてきました。この記事では、フロントエンド開発とバックエンド開発の開発の歴史を調査し、現在の開発傾向を分析し、将来の開発の方向性を展望します。 1. フロントエンド開発とバックエンド開発の開発経緯 インターネットの初期段階では、Webサイト開発はコンテンツの表示が中心で、フロントエンド開発はHTML、CSS、JavaScriptなどの技術が中心でした。ページの基本機能を実現します。

Vue カスタム イベントの使用法と一般的なシナリオ Vue カスタム イベントの使用法と一般的なシナリオ Sep 15, 2023 pm 12:12 PM

Vue カスタム イベントの使用法と一般的なシナリオ Vue.js は、ユーザー インターフェイスを構築するための人気のある JavaScript フレームワークです。 Vue では、カスタム イベントを通じてコン​​ポーネント間の通信を実装できます。カスタム イベントは Vue の非常に便利な機能の 1 つであり、異なるコンポーネント間でデータを渡し、特定の動作をトリガーできるようになります。この記事では、Vue でのカスタム イベントの使用法と一般的なシナリオを紹介し、具体的なコード例を示します。 1. カスタム イベントの基本的な使用法 Vue では、次のことができます。

See all articles