JavaScriptのapplyメソッドを理解する
JavaScript では、apply() メソッドは非常に便利なメソッドです。これを使用して関数を呼び出し、関数の this 値とパラメーターを設定できます。この記事では、apply() メソッドがどのように機能するかをよりよく理解するために、このメソッドを手書きします。
まず、apply() メソッドの構文を理解しましょう。これは 2 つのパラメータを取ります。最初のパラメータは呼び出される関数で、2 番目のパラメータは関数に渡されるパラメータを含む配列または配列のようなオブジェクトです。以下に示すように:
function myFunc(arg1, arg2) { console.log(this.name + arg1 + arg2); } const obj = {name: 'John'}; const args = [1, 2]; myFunc.apply(obj, args); // 输出:John12
上の例では、apply() メソッドを使用して myFunc() 関数を呼び出しました。この値を obj に設定し、引数リストを args 配列に保存します。 myFunc() 関数の出力は、obj の name 属性を 2 つのパラメーターに追加した結果です。
ここで、apply() メソッドを手動で作成してみましょう。これを行うには、apply() メソッドの特定の機能をシミュレートする myApply() という関数を作成します。 apply() メソッドをシミュレートするには、まず指定された関数が存在するかどうかを確認し、2 番目のパラメーターが配列または配列のようなオブジェクトであること、およびオブジェクトの長さが null でないことを確認する必要があります。 myApply() 関数のコードは次のとおりです。
Function.prototype.myApply = function(context, args) { if (typeof this !== 'function') { throw new TypeError('The current object is not a function.'); } if (!Array.isArray(args) && !((args.length !== null) && (args !== ''))) { throw new TypeError('The second argument is not an array or array-like object.'); } const fn = Symbol('fn'); context = context || window; context[fn] = this; const result = context[fn](...args); delete context[fn]; return result; }
上記のコードでは、まず呼び出される関数が存在するかどうかを確認し、存在しない場合は型エラーをスローします。次に、2 番目のパラメータが配列または配列のようなオブジェクトであるかどうかを確認します。そうでない場合は、型エラーがスローされます。両方のパラメーターが有効な場合、コンテキスト オブジェクトの一時プロパティとして一意の Symbol を作成し、関数をコンテキスト オブジェクトにバインドし、args 引数を渡してそれを呼び出し、結果を result 変数に格納します。最後に、この一時プロパティをコンテキスト オブジェクトから削除し、結果を返します。
次に、次のコードに示すように、myApply() 関数を使用して関数を呼び出すことができます。
function myFunc(arg1, arg2) { console.log(this.name + arg1 + arg2); } const obj = {name: 'John'}; const args = [1, 2]; myFunc.myApply(obj, args); // 输出:John12
この例では、myApply() メソッドを使用して myFunc ( )関数。この値を obj に設定し、引数リストを args 配列に保存します。 myFunc() 関数の出力は、obj の name 属性を 2 つのパラメーターに追加した結果です。
この記事では、 apply() メソッドを手書きし、それを使用して関数を呼び出しました。関数が存在するかどうかを確認する方法と、不正な引数を渡さないようにする方法について説明しました。この例を使用すると、apply() メソッドがどのように機能するか、およびこのメソッドを手動で記述するために必要な手順をよりよく理解できるはずです。
以上がJavaScriptのapplyメソッドを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホット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)

ホットトピック











この記事では、functionコンポーネントでのデータフェッチやDOM操作などの副作用を管理するためのフックであるReactの使用Effectについて説明します。メモリリークなどの問題を防ぐための使用、一般的な副作用、およびクリーンアップについて説明します。

怠zyな読み込みは、必要になるまでコンテンツの読み込みを遅延させ、初期負荷時間とサーバーの負荷を削減することにより、Webパフォーマンスとユーザーエクスペリエンスを改善します。

JavaScriptの高次関数は、抽象化、共通パターン、および最適化技術を通じて、コードの簡潔さ、再利用性、モジュール性、およびパフォーマンスを強化します。

この記事では、JavaScriptのカレーについて説明します。これは、マルチアーグメント関数を単一argument関数シーケンスに変換する手法です。 Curryingの実装、部分的なアプリケーションなどの利点、実用的な用途、コード読み取りの強化を調査します

この記事では、Virtual DOMツリーを比較してDOMを効率的に更新するReactの調整アルゴリズムについて説明します。パフォーマンスの利点、最適化技術、ユーザーエクスペリエンスへの影響について説明します。

この記事では、ReactのUseContextを説明しています。これにより、小道具掘削を避けることで国家管理を簡素化します。再レンダーの削減により、集中状態やパフォーマンスの改善などの利点について説明します。

記事では、PreventDefault()メソッドを使用して、イベントハンドラーのデフォルト動作の防止、ユーザーエクスペリエンスの強化などの利点、およびアクセシビリティの懸念などの潜在的な問題について説明します。

この記事では、予測可能性、パフォーマンス、ユースケースなどの側面に焦点を当てた、Reactの制御されていないコンポーネントと制御されていないコンポーネントの利点と欠点について説明します。それらを選択する際に考慮することを要因についてアドバイスします。
