JavaScript_javascript スキルにおけるカスタム イベントの使用状況の分析
この記事の例では、JavaScript でのカスタム イベントの使用法について説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。
Webフロントエンド開発ではjsのカスタムイベントを利用しない人も多いかもしれませんが、比較的大規模なプロジェクトを行う場合、特に複数人で共同開発する場合にはカスタムイベントは非常に重要です。では、js のカスタム イベントとは何でしょうか?まず例を見てみましょう:
フロントエンド開発者 A は関数をカプセル化します:
alert(a); //これは N 行のコードを表します
}
しばらくすると、フロントエンド開発者 B は A に基づいてこの関数を強化するため、次のように書きます:
alert(a); //これは N 行のコードを表します
alert(b); //これは N 行のコードを表します
}
問題は見つかりましたか? B は、A の変数や関数などの名前付けや競合の問題に注意する必要があります。しばらくすると、フロントエンド開発者 C もこの関数を強化します。
alert(a); //これは N 行のコードを表します
alert(b); //これは N 行のコードを表します
alert(c); //これは N 行のコードを表します
}
この時点では非常にイライラするでしょうし、C でコードを書くのは簡単ではないと確信しています。この問題を解決する方法は、次のようなカスタム イベントを相互に影響を与えずに要素に追加できることです。
} ,false);
window.addEventListener('click',function(){
アラート(2);
} ,false);
} ,false);
window.addEventListener('move',function(){
アラート(4);
} ,false);
です。 イベント ハンドラーにパラメータを渡す方法を見てみましょう:
var args = [] //イベントハンドラーに渡されるパラメータを格納するためのargsを定義します
If (!obj) obj = window; // グローバル関数の場合、obj=window; //イベントハンドラーに渡されるパラメータを取得します
for (var i = 2; i
戻り関数() {
obj[strFunc].apply(obj, args) // 指定されたイベント ハンドラーにパラメータを渡します
}
}
関数 class1() {
}
class1.prototype = {
show: function() {
This.onShow();
}、
onShow: function() { }
}
function objOnShow(userName) {
alert("こんにちは、" ユーザー名);
}
関数 test() {
var obj = new class1();
var userName = "テスト";
obj.onShow = createFunction(null, "objOnShow", userName);
Obj.show();
}
「イベントメカニズムはパラメーター情報を持たずに関数の名前だけを渡すため、パラメーターを渡すことはできません。」 「この問題を解決するには、逆の考え方をすることができます。いいえ。」パラメータを渡す方法を考えますが、パラメータを持たないイベント ハンドラを構築する方法を考えてください。このプログラムはパラメータ付きのイベント ハンドラをベースに作成されており、「ここでの「プログラム」は createFunction. 関数を巧みに使用しています。 apply 関数は、パラメーターを持つ関数をパラメーターのない関数にカプセル化します。最後に、カスタム イベントの複数のバインディングを実装する方法を見てみましょう:
//パラメータ付き関数をパラメータなし関数にカプセル化します
function createFunction(obj, strFunc) {
var args = [] //イベントハンドラーに渡されるパラメータを格納するためのargsを定義します
If (!obj) obj = window; // グローバル関数の場合、obj=window; //イベントハンドラーに渡されるパラメータを取得します
for (var i = 2; i
戻り関数() {
obj[strFunc].apply(obj, args) // 指定されたイベント ハンドラーにパラメータを渡します
}
}
関数 class1() {
}
class1.prototype = {
show: function() {
if (this.onShow) {
for (var i = 0; i < this.onShow.length; i ) {
This.onShow[i]();
}
}
}、
attachOnShow: function(_eHandler) {
If (!this.onShow) { this.onShow = [] }
This.onShow.push(_eHandler);
}
}
function objOnShow(userName) {
alert("こんにちは、" ユーザー名);
}
function objOnShow2(testName) {
alert("show:" テスト名);
}
関数 test() {
var obj = new class1();
var userName = "あなたの名前";
Obj.attachOnShow(createFunction(null, "objOnShow", userName));
Obj.attachOnShow(createFunction(null, "objOnShow2", "テストメッセージ"));
Obj.show();
}
function createFunction(obj, strFunc) {
var args = [] //イベントハンドラーに渡されるパラメータを格納するためのargsを定義します
If (!obj) obj = window; // グローバル関数の場合、obj=window; //イベントハンドラーに渡されるパラメータを取得します
for (var i = 2; i
戻り関数() {
obj[strFunc].apply(obj, args) // 指定されたイベント ハンドラーにパラメータを渡します
}
}
関数 class1() {
}
class1.prototype = {
show: function() {
if (this.onShow) {
for (var i = 0; i < this.onShow.length; i ) {
This.onShow[i]();
}
}
}、
attachOnShow: function(_eHandler) { // イベントをアタッチ
If (!this.onShow) { this.onShow = [] }
This.onShow.push(_eHandler);
}、
detachOnShow: function(_eHandler) { // イベントを削除します
If (!this.onShow) { this.onShow = [] }
This.onShow.pop(_eHandler);
}
}
関数 objOnShow(userName) {
alert("こんにちは、" ユーザー名);
}
function objOnShow2(testName) {
alert("show:" テスト名);
}
関数 test() {
var obj = new class1();
var userName = "あなたの名前";
Obj.attachOnShow(createFunction(null, "objOnShow", userName));
Obj.attachOnShow(createFunction(null, "objOnShow2", "テストメッセージ"));
Obj.show();
obj.detachOnShow(createFunction(null, "objOnShow", userName));
Obj.show(); // 1 つを削除し、残りの 1 つを表示します
obj.detachOnShow(createFunction(null, "objOnShow2", "テストメッセージ"));
Obj.show(); // 両方を削除し、どちらも表示しません
}

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











Netflix のアバターは、ストリーミング ID を視覚的に表現したものです。ユーザーはデフォルトのアバターを超えて自分の個性を表現できます。 Netflix アプリでカスタム プロフィール写真を設定する方法については、この記事を読み続けてください。 Netflix でカスタム アバターをすばやく設定する方法 Netflix には、プロフィール写真を設定する機能が組み込まれていません。ただし、ブラウザに Netflix 拡張機能をインストールすることでこれを行うことができます。まず、Netflix 拡張機能のカスタム プロフィール画像をブラウザにインストールします。 Chrome ストアで購入できます。拡張機能をインストールした後、ブラウザで Netflix を開き、アカウントにログインします。右上隅にあるプロフィールに移動し、をクリックします

Eclipse でショートカット キーの設定をカスタマイズするにはどうすればよいですか?開発者にとって、ショートカット キーをマスターすることは、Eclipse でコーディングする際の効率を向上させるための鍵の 1 つです。強力な統合開発環境として、Eclipse は多くのデフォルトのショートカット キーを提供するだけでなく、ユーザーが独自の好みに応じてショートカット キーをカスタマイズすることもできます。この記事では、Eclipseでショートカットキーの設定をカスタマイズする方法と具体的なコード例を紹介します。 Eclipseを開く まず、Eclipseを開いて次のように入力します。

JSP コメントの分類と使用状況の分析 JSP コメントは 2 つのタイプに分類されます。 単一行コメント: で終わる、単一行のコードのみコメントできます。複数行のコメント: /* で始まり */ で終わると、複数行のコードにコメントを付けることができます。単一行のコメントの例 複数行のコメントの例/**これは複数行のコメントです*コードの複数行にコメントできます*/JSP コメントの使用法 JSP コードを読みやすくするために JSP コメントを使用できます。

1. 下の図はediusのデフォルトの画面レイアウトです EDIUSのデフォルトのウィンドウレイアウトは横レイアウトのため、シングルモニタ環境では多くのウィンドウが重なってプレビューウィンドウがシングルウィンドウモードになります。 2. メニューバーの[表示]から[デュアルウィンドウモード]を有効にすると、プレビューウィンドウに再生ウィンドウと録音ウィンドウを同時に表示できます。 3. [表示メニューバー > ウィンドウレイアウト > 一般] でデフォルトの画面レイアウトに戻すことができます。また、ウィンドウをドラッグして好みのレイアウトにし、[表示 > ウィンドウ レイアウト > 現在のレイアウトを保存 > 新規作成] をクリックすると、自分に合ったレイアウトをカスタマイズして、よく使う画面レイアウトとして保存することもできます。ポップアップ [現在のレイアウトを保存] レイアウト] 小さなウィンドウにレイアウト名を入力し、OK をクリックします

WPS は一般的に使用されるオフィス ソフトウェア スイートであり、WPS テーブル関数はデータ処理と計算に広く使用されています。 WPS テーブルには、2 つの日付間の時差を計算するために使用される、DATEDIF 関数という非常に便利な関数があります。 DATEDIF 関数は英語の DateDifference の略語で、構文は次のとおりです: DATEDIF(start_date,end_date,unit) ここで、start_date は開始日を表します。

C 言語で exit 関数を使用する方法には、具体的なコード例が必要です。C 言語では、プログラムの実行をプログラムの初期段階で終了したり、特定の条件下でプログラムを終了したりする必要があることがよくあります。 C 言語には、この関数を実装するための exit() 関数が用意されています。この記事では、exit() 関数の使用法を紹介し、対応するコード例を示します。 exit() 関数は C 言語の標準ライブラリ関数であり、ヘッダー ファイルに含まれています。その機能はプログラムの実行を終了することであり、整数を取ることができます。

Excel の表では、データの変化傾向をより直観的に確認するために座標軸を挿入する必要がある場合があります。表に座標軸を挿入する方法がまだ分からない友達もいると思いますが、次に Excel で座標軸のスケールをカスタマイズする方法を紹介します。座標軸の挿入方法: 1. Excel インターフェイスでデータを選択します。 2. 挿入インターフェイスで、クリックして縦棒グラフまたは棒グラフを挿入します。 3. 展開されたインターフェースで、グラフィックのタイプを選択します。 4. テーブルを右クリックして表示されるインターフェイスで、[データの選択] をクリックします。 5. 拡張されたインターフェイスで、カスタマイズできます。

MySQL の ISNULL() 関数は、指定された式またはカラムが NULL かどうかを判断するために使用される関数です。ブール値、式が NULL の場合は 1、それ以外の場合は 0 を返します。 ISNULL()関数は、SELECT文やWHERE句の条件判定に使用できます。 1. ISNULL() 関数の基本構文: ISNULL(expression) ここで、expression は、NULL かどうかを判断する式です。
