JavaScriptのthis、apply、bind、callについて説明します.
9374 ワード
ソース:https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/this
符号化中はjavaでもjavascriptでも多く見られます.
今日では、これに関連するアプリケーション、バインド、呼び出し関数について説明します.
ほとんどの場合、thisの値は関数を呼び出す方法によって決まります.
コードを直接見ましょう
関数コンテキストのthisを見てみましょう.
グローバルコンテキストと関数コンテキストから値を取得しました.
ただし、名前の付いた変数で値を指定する必要がある場合があります.
このときはcall、apply、bindを使用します.
callとapplyの最初のパラメータは、このオブジェクトを設定することです.
2番目のパラメータには、スキップするパラメータ値が含まれます.
apply関数の2番目のパラメータはcallと異なる点は、配列が必要であることです.
bindは関数を実行しません.
ただし、boundという関数はいつでも返すことができます.
this、apply、bind、callを簡単に紹介しました.
この関数には矢印関数の唯一のthisはありません.
外部関数で見つけます.
そこまでは触れていないところも多いですが、実際にエンコードして利用すれば整理してアップロードします.
ありがとう!
[概要]
符号化中はjavaでもjavascriptでも多く見られます.
今日では、これに関連するアプリケーション、バインド、呼び出し関数について説明します.
[this]
ほとんどの場合、thisの値は関数を呼び出す方法によって決まります.
コードを直接見ましょう
// 웹 브라우저에서는 window 객체가 전역 객체입니다.
console.log(this === window); // true
a = 37;
console.log(window.a); // 37
this.b = "MDN";
console.log(window.b) // "MDN"
console.log(b) // "MDN"
上のコードに示すように、グローバルコンテキストではwindowオブジェクトと同じです.関数コンテキストのthisを見てみましょう.
let user = {
name: "JOOO",
age: 25,
sayHi() {
// 'this'는 '현재 객체'를 나타냅니다.
alert(this.name);
}
};
user.sayHi(); // JOOO
sayHi関数が実行されると、現在のオブジェクト、すなわちユーザーオブジェクトが参照されていることがわかります.[call,apply,bind]
グローバルコンテキストと関数コンテキストから値を取得しました.
ただし、名前の付いた変数で値を指定する必要がある場合があります.
このときはcall、apply、bindを使用します.
1. call,apply
let user = {name : 'JOOO'}; // user 객체 생성
let sayHi = function(age){ // sayHi 함수 생성
console.log(`안녕, 내 이름은 ${this.name}입니다. 나이는 ${age}입니다. `);
};
sayHi(15); // this객체가 없는상태
sayHi.call(user,25); // this객체를 user로 설정, 파라미터 25
sayHi.apply(user,[35]); //this객체를 user로 설정, 파라미터 35
callとapplyの最初のパラメータは、このオブジェクトを設定することです.
2番目のパラメータには、スキップするパラメータ値が含まれます.
apply関数の2番目のパラメータはcallと異なる点は、配列が必要であることです.
2. bind
bindは関数を実行しません.
ただし、boundという関数はいつでも返すことができます.
let user = {name : 'JOOO'}; // user 객체 생성
let sayHi = function(age){ // sayHi 함수 생성
console.log(`안녕, 내 이름은 ${this.name}입니다. 나이는 ${age}입니다. `);
};
// user객체를 this로 설정하고 boundObj변수를 통해 나중에 사용할수있습니다.
let boundObj = sayHi.bind(user);
boundObj(32); // 안녕, 내 이름은 JOOO입니다. 나이는 32입니다.
[終了]
this、apply、bind、callを簡単に紹介しました.
この関数には矢印関数の唯一のthisはありません.
外部関数で見つけます.
そこまでは触れていないところも多いですが、実際にエンコードして利用すれば整理してアップロードします.
ありがとう!
Reference
この問題について(JavaScriptのthis、apply、bind、callについて説明します.), 我々は、より多くの情報をここで見つけました https://velog.io/@sjwngjs/javascript-자바스크립트에서의-thisapplybindcall에-대해-알아봅시다テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol