CoreJavaScript_03.this(2)
12678 ワード
これらの内容は「Core Javascript」の書籍を参考にして作成され、初心者開発者に有益な書籍を提供してくれた著者の池恩・鄭在南に感謝します.
これを明示的にバインドします。
call vs apply差異
機能的には同じですが、因子表現が違う call/applyを使用して、類似した配列のオブジェクトを配列に変換できます.
理解できるアレイの最大値、最小値でよく使われる
配列内の要素を比較する場合は、電子演算子を別の方法で使用することもできます.
これを明示的にバインドします。
call/apply
call
・apply
・メソッドを使用して関数を実行し、this
値を指定できます.function test() {
console.log(this);
}
test(); // 전역객체 출력
test.call({ x: 1 });
test.apply({ x: 1 });
// 둘다 {x:1} 출력
機能的には同じですが、因子表現が違う
function test(x, y) {
console.log(x);
console.log(y);
}
// 두 메서드 모두 첫번째 인자로 this를 지정하고, 두번째 인자부터는 해당 함수의 매개변수(이자)를 대입한다
test.call(null, 1, 2); // call 메서드는 있는 그대로 나열한다
test.apply(null, [1, 2]); // apply 메서드는 배열로 감싸준다
類似パターンオブジェクト
// 유사배열객체
var obj = {
0: 'a',
1: 'b',
2: 'c',
length: 3,
};
// 요소 추가
Array.prototype.push.call(obj, 'd');
console.log(obj);
// {'0': 'a', '1': 'b', '2': 'c', '3': 'd', length: 4 }
// 배열로 전환
var arr = Array.prototype.slice.call(obj);
console.log(arr);
// [ 'a', 'b', 'c', 'd' ]
しかし,この変換はcall/applyの元の意図と一致せず,コードの解釈が困難であるため,ES 6ではArrayを用いる.fromメソッドが新しく登場しました.var arr = Array.from(obj);
console.log(arr);
// [ 'a', 'b', 'c', 'd' ]
コンストラクション関数でコンストラクション関数を使用するには
call
・apply
伝達this
値により、生成者の再利用性を確保することができる.function Person(name, gender) {
this.name = name;
this.gender = gender;
}
function Student(name, gender, school) {
Person.call(this, name, gender); // Student 의 this 값을 Person 으로 전달
this.school = school;
}
var anw = new Student('son', 'male', 'wecode');
console.log(anw); // Student { name: 'son', gender: 'male', school: 'wecode' }
// 이런식으로 this 와 call 사용해서 반복적으로 사용할 수 있다.
最大値、最小値
理解できる
apply
構文var arr = [7, 3, 5, 9];
var max = Math.max.apply(null, arr);
// max 함수의 매개변수로 배열의 요소를 넣어야할 때 apply 활용하여 배열을 그대로 배치할 수 있다.
// 첫번째 인자로 null 넣었지만, 사실 이는 this 정보이기 때문에 출력값과는 아무 상관이 없다.
console.log(max); // 9
スプレッドシート演算子の使用配列内の要素を比較する場合は、電子演算子を別の方法で使用することもできます.
var arr = [7, 3, 5, 9];
var max = Math.max(...arr);
console.log(max);
// 이런식으로 요소만을 복사하는 연산자를 활용하여 간편하게 작성할 수도 있다
Reference
この問題について(CoreJavaScript_03.this(2)), 我々は、より多くの情報をここで見つけました https://velog.io/@sgyos000/CoreJavaScript03.this2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol