ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の call()、apply()、bind() をマスターする: これを制御する
JavaScript では、call()、apply()、bind() メソッドを使用して関数のコンテキスト (this) を制御し、関数が操作するオブジェクトを決定します。これらのメソッドを使用すると、特定の this 値を使用して関数を呼び出すことができ、関数がオブジェクトとどのように対話するかを管理するために不可欠です。
call() メソッドを使用すると、特定の this 値と個々の引数を使用して関数を呼び出すことができます。これは、関数を呼び出すときにコンテキスト (this) を明示的に設定する方法の 1 つです。
functionName.call(thisArg, arg1, arg2, ...);
function greet() { console.log(`Hello, ${this.name}!`); } const person = { name: 'Alice' }; greet.call(person); // Output: Hello, Alice!
この例では、call() を使用して、person オブジェクトを参照するgreet関数を呼び出します。そのため、出力は「こんにちは、アリス!」となります。
apply() メソッドは call() に非常に似ていますが、引数を個別に渡すのではなく、配列または配列のようなオブジェクトとして渡します。この値は指定されたオブジェクトに設定されたままです。
functionName.apply(thisArg, [arg1, arg2, ...]);
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」になります。
bind() メソッドは、呼び出されるときに this が指定された値に設定される新しい関数を作成し、将来の呼び出しのために引数を事前設定できるようにします。 call() や apply() とは異なり、bind() は関数をすぐには呼び出しません。代わりに、後で呼び出すことができる新しい関数を返します。
functionName.call(thisArg, arg1, arg2, ...);
function greet() { console.log(`Hello, ${this.name}!`); } const person = { name: 'Alice' }; greet.call(person); // Output: Hello, Alice!
ここで、bind() は新しい関数greetCharlie を作成し、これが person オブジェクトに永続的に設定されます。 welcomeCharlie() が呼び出されると、「こんにちは、チャーリー!」と出力されます。
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 |
functionName.call(thisArg, arg1, arg2, ...);
これらのメソッドは、JavaScript でこのコンテキストを制御し、関数を処理するために、特にメソッドを借用したり、イベント ハンドラーを設定したりする場合に不可欠です。
こんにちは、アバイ・シン・カタヤットです!
私はフロントエンドとバックエンドの両方のテクノロジーの専門知識を持つフルスタック開発者です。私はさまざまなプログラミング言語やフレームワークを使用して、効率的でスケーラブルでユーザーフレンドリーなアプリケーションを構築しています。
ビジネス用メールアドレス kaashshorts28@gmail.com までお気軽にご連絡ください。
以上がJavaScript の call()、apply()、bind() をマスターする: これを制御するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。