ホームページ ウェブフロントエンド jsチュートリアル JavaScript の call()、apply()、bind() をマスターする: これを制御する

JavaScript の call()、apply()、bind() をマスターする: これを制御する

Dec 21, 2024 am 06:26 AM

Mastering call(), apply(), and bind() in JavaScript: Controlling this

JavaScript の call()、apply()、bind() メソッドについて

JavaScript では、call()、apply()、bind() メソッドを使用して関数のコンテキスト (this) を制御し、関数が操作するオブジェクトを決定します。これらのメソッドを使用すると、特定の this 値を使用して関数を呼び出すことができ、関数がオブジェクトとどのように対話するかを管理するために不可欠です。

1.call() メソッド

call() メソッドを使用すると、特定の this 値と個々の引数を使用して関数を呼び出すことができます。これは、関数を呼び出すときにコンテキスト (this) を明示的に設定する方法の 1 つです。

構文:

functionName.call(thisArg, arg1, arg2, ...);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • thisArg: 関数内で this として使用される値。
  • arg1, arg2, ...: 関数に渡される引数。

call() の例:

function greet() {
  console.log(`Hello, ${this.name}!`);
}

const person = { name: 'Alice' };

greet.call(person);  // Output: Hello, Alice!
ログイン後にコピー
ログイン後にコピー

この例では、call() を使用して、person オブジェクトを参照するgreet関数を呼び出します。そのため、出力は「こんにちは、アリス!」となります。

call() の使用例:

  • 異なるコンテキストでのメソッドの呼び出し: call() を使用して、あるオブジェクトからメソッドを借用し、別のオブジェクトに適用できます。

2.apply() メソッド

apply() メソッドは call() に非常に似ていますが、引数を個別に渡すのではなく、配列または配列のようなオブジェクトとして渡します。この値は指定されたオブジェクトに設定されたままです。

構文:

functionName.apply(thisArg, [arg1, arg2, ...]);
ログイン後にコピー
  • thisArg: 関数内で this として使用される値。
  • [arg1, arg2, ...]: 関数に渡す引数を含む配列または配列に似たオブジェクト。

apply() の例:

function sum(a, b) {
  console.log(this.name, a + b);
}

const person = { name: 'Bob' };

sum.apply(person, [5, 10]);  // Output: Bob 15
ログイン後にコピー

この例では、apply() を使用して引数の配列 [5, 10] を sum 関数に渡し、この値は person オブジェクトに設定されるため、出力は「Bob 15」になります。

apply() の使用例:

  • 引数の配列の受け渡し: 配列の形式で引数があり、それを関数に渡したい場合は、apply() を使用します。

3. bind() メソッド

bind() メソッドは、呼び出されるときに this が指定された値に設定される新しい関数を作成し、将来の呼び出しのために引数を事前設定できるようにします。 call() や apply() とは異なり、bind() は関数をすぐには呼び出しません。代わりに、後で呼び出すことができる新しい関数を返します。

構文:

functionName.call(thisArg, arg1, arg2, ...);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  • thisArg: これがバインドされる値。
  • arg1, arg2, ...: 事前に設定する引数。

bind() の例:

function greet() {
  console.log(`Hello, ${this.name}!`);
}

const person = { name: 'Alice' };

greet.call(person);  // Output: Hello, Alice!
ログイン後にコピー
ログイン後にコピー

ここで、bind() は新しい関数greetCharlie を作成し、これが person オブジェクトに永続的に設定されます。 welcomeCharlie() が呼び出されると、「こんにちは、チャーリー!」と出力されます。

bind() の使用例:

  • 固定の this 値を使用した新しい関数の作成:bind() は、特定の this 値を保持する新しい関数を作成する必要がある場合に便利です。

call()、apply()、およびbind()の違い

機能
Feature call() apply() bind()
Execution Immediately invokes the function Immediately invokes the function Returns a new function (does not execute immediately)
Arguments Pass arguments individually Pass arguments as an array or array-like object Pass arguments individually or preset them
Return Value Returns the result of the function call Returns the result of the function call Returns a new function
Use Case Call a function with a specified this value and arguments Call a function with a specified this value and an array of arguments Create a new function with a preset this value and arguments
call() apply() バインド() 実行 関数を即座に呼び出します 関数を即座に呼び出します 新しい関数を返します (すぐには実行されません) 引数 引数を個別に渡す 引数を配列または配列のようなオブジェクトとして渡す 引数を個別に渡すか、事前に設定します 戻り値 関数呼び出しの結果を返します 関数呼び出しの結果を返します 新しい関数を返します 使用例 この値と引数を指定して関数を呼び出す 指定された this 値と引数の配列を使用して関数を呼び出す この値と引数をプリセットして新しい関数を作成します テーブル>

例: call()、apply()、bind() の組み合わせ

functionName.call(thisArg, arg1, arg2, ...);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

結論

  • call()apply() は、指定された this 値と引数で関数を即座に呼び出すために使用されます。
  • bind() は、すぐに呼び出すことなく、指定されたこの値とオプションで事前に設定された引数を使用して新しい関数を作成するために使用されます。
  • call() は個々の引数に便利ですが、apply() は引数の配列を渡すのに最適です。
  • bind() は、後で固定コンテキスト (this) で呼び出すことができる関数を作成する場合に便利です。

これらのメソッドは、JavaScript でこのコンテキストを制御し、関数を処理するために、特にメソッドを借用したり、イベント ハンドラーを設定したりする場合に不可欠です。


こんにちは、アバイ・シン・カタヤットです!
私はフロントエンドとバックエンドの両方のテクノロジーの専門知識を持つフルスタック開発者です。私はさまざまなプログラミング言語やフレームワークを使用して、効率的でスケーラブルでユーザーフレンドリーなアプリケーションを構築しています。
ビジネス用メールアドレス kaashshorts28@gmail.com までお気軽にご連絡ください。

以上がJavaScript の call()、apply()、bind() をマスターする: これを制御するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

C/CからJavaScriptへ:すべてがどのように機能するか C/CからJavaScriptへ:すべてがどのように機能するか Apr 14, 2025 am 12:05 AM

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

JavaScriptとWeb:コア機能とユースケース JavaScriptとWeb:コア機能とユースケース Apr 18, 2025 am 12:19 AM

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScript in Action:実際の例とプロジェクト JavaScript in Action:実際の例とプロジェクト Apr 19, 2025 am 12:13 AM

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptエンジンの理解:実装の詳細 JavaScriptエンジンの理解:実装の詳細 Apr 17, 2025 am 12:05 AM

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Python vs. JavaScript:コミュニティ、ライブラリ、リソース Python vs. JavaScript:コミュニティ、ライブラリ、リソース Apr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

Python vs. JavaScript:開発環境とツール Python vs. JavaScript:開発環境とツール Apr 26, 2025 am 12:09 AM

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

JavaScript通訳者とコンパイラにおけるC/Cの役割 JavaScript通訳者とコンパイラにおけるC/Cの役割 Apr 20, 2025 am 12:01 AM

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

See all articles