要約する1. 類似点
2. 違い
call() メソッド
/* 通常モード */ obj = { 合計(a, b) { console.log(これ) a + bを返す } } // sum 関数の apply メソッドと bind メソッドを実行します。出力される内容は以下のようになります。obj.sum.call() // ウィンドウを印刷 obj.sum.call(undefined, 1, 2) // 印刷ウィンドウ obj.sum.call(null, 1, 2) // 印刷ウィンドウ /* 厳密モード */ 「厳密な使用」 // sum関数のapplyメソッドとbindメソッドを実行し、以下のように出力します。obj.sum.call() // undefinedを出力します。 obj.sum.call(undefined, 1, 2) // undefined と表示される obj.sum.call(null, 1, 2) // null を出力します シミュレーションの実装1. 要点
2. call()、apply()、bind() メソッドのシミュレーション実装において、最初のパラメータが渡されない場合や undefined または null が渡された場合、ここでは JS 通常モードと厳密モードで統一された処理が行われ、つまり、対象関数内の this は window オブジェクトを指します。 3. コードは次のとおりです Function.prototype.myCall = function (コンテキスト、...引数) { コンテキスト === 未定義 || コンテキスト === null の場合 { コンテキスト = ウィンドウ } // 次の行はコアコードです context.fn = this const 結果 = context.fn(...args) コンテキストを削除する.fn 結果を返す } obj1 = { 基本数: 1, 合計(a, b) { console.log(これ) this.basicNum + a + b を返す } } obj2 = { 基本数: 9 } コンソールログ(obj1.sum.call(obj2, 2, 3)) // 14 コンソールログ(obj1.sum.myCall(obj2, 2, 3)) // 14 apply() メソッドapply() メソッドを呼び出すと、ターゲット関数が直ちに実行され、関数内の this の参照が変更されます。これはメソッドの最初のパラメータを指します。2 番目のパラメータはパラメータ配列または引数オブジェクトです。各配列要素または引数オブジェクトによって表される各パラメータは、ターゲット関数のパラメータとして 1 つずつ渡されます。 シミュレーションの実装1.要点
2. コードは次のとおりです Function.prototype.myApply = 関数 (コンテキスト、引数) { コンテキスト === 未定義 || コンテキスト === null の場合 { コンテキスト = ウィンドウ } // 次の行はコアコードです context.fn = this const 結果 = context.fn(...args) コンテキストを削除する.fn 結果を返す } コンソール.log(obj1.sum.apply(obj2, [2, 3])) // 14 コンソール.log(obj1.sum.myApply(obj2, [2, 3])) // 14 bind() メソッド
シミュレーションの実装1. 要点
2. コードは次のとおりです Function.prototype.myBind = function (context, ...initArgs) { コンテキスト === 未定義 || コンテキスト === null の場合 { コンテキスト = ウィンドウ } // この値をキャッシュする const _this = this 関数を返す (...引数) { // 次の行はコアコードです context.fn = _this const 結果 = context.fn(...initArgs, ...args) コンテキストを削除する.fn 結果を返す } } コンソール.log(obj1.sum.bind(obj2, 2)(3)) // 14 コンソール.log(obj1.sum.myBind(obj2, 2)(3)) // 14 関連する知識ポイント
JavaScript 関数呼び出し、適用、およびバインド メソッドの詳細なケース分析に関するこの記事はこれで終わりです。JavaScript 関数呼び出し、適用、およびバインド メソッドに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Nginx の realip モジュールの使い方の基礎学習
背景最近、SQL 文を書くときに、IN と Exists のどちらを選択するか迷ったので、両方の方法...
最近、私は「ぶどうコレクション」というプロジェクトに取り組んでいます。簡単に言うと、Budou ペー...
1. 理由新しいシステムに MySQL を再インストールする必要があったので、将来詳細を忘れた場合...
目次1. イベントとは何ですか? 2. イベントの使い方3. バインドタップとキャッチタップの違い4...
この記事では、参考までにMySQL 5.7.13 winx64のインストールと設定方法のグラフィック...
序文: MySQL では、マスター/スレーブ アーキテクチャが最も基本的かつ最も一般的に使用されるア...
a タグは主にページ ジャンプを実装するために使用され、これは href 属性または onclick...
<br /> 特定の Web サイトを閲覧して、優れた Web ページを見つけた場合、そ...
この記事の例では、円形のプログレスバーのドラッグアンドスライドを実現するための具体的なJSコードを紹...
HTML では、Web ページで使用されるエンコーディングを指定する必要があります。一般的な指定方法...
この記事では、例を使用して MySQL 一時テーブルの使用方法を説明します。ご参考までに、詳細は以下...
Mysql は、高性能なデータ ストレージ サービスを提供する主流のオープン ソース リレーショナル...
目次1. redo ログ (MySQL ストレージ エンジン InnoDB のトランザクション ログ...
目次1. 父から息子へ2. 息子から父へ3. 親子関係のないコンポーネントの値の転送4. ヴュークス...
目次1. 覚えておくべき知識1. 変数タイプ2. シェル変数の説明3. シングルクォート、ダブルクォ...