ジャバスクリプト.コール()apply ().bind ()を簡略化しました.
7605 ワード
これらの3つのメソッドは
は1つ以上の引数をとる.2番目の引数は関数に渡されます.
は1または2の引き数をとる.2番目の引数は配列でなければなりません.
引数は1つだけです.上記のメソッドとは異なり、このメソッドはすぐに関数を呼び出しません.代わりに新しい関数を返しますので、手動で後で呼び出さなければなりません.
イベントリスナーを全体に追加したいとしましょう
NodeListには、数字のキーのコレクションと、lengthキーが含まれています.
読書ありがとう!
リンク
Function.prototypes.call() | MDN
Function.prototypes.apply() | MDN
Function.prototypes.bind() | MDN
NodeList | MDN
Function.prototypes
. 基本的に、彼らがすることは「オブジェクト目標」を指し示すので、これの参照を変えています.const sayHi = function() {
console.log(`Hi ${this.name}!`);
};
const person = {
name: "foxy",
};
sayHi.call(person); // Hi foxy!
sayHi.apply(person); // Hi foxy!
sayHi.bind(person)(); // Hi foxy!
この例では、3つのメソッドがperson
オブジェクトSOthis.name
現在person.name
. オブジェクトリファレンスが最初の引数として渡されることに注意してください.. call ()
は1つ以上の引数をとる.2番目の引数は関数に渡されます.
const addItems = function(item1, item2){
this.items.push(item1, item2);
};
const cart = {
items: [],
};
// Add items to cart
addItems.call(cart, 'lettuce', 'watermelon');
P . S .使用できますarguments
の代わりにitem1, item2
:const addItems = function(){
this.items.push(...arguments);
};
. apply ()
は1または2の引き数をとる.2番目の引数は配列でなければなりません.
addItems.apply(cart, ['egg fried rice', 'cucumber']);
. bind ()
引数は1つだけです.上記のメソッドとは異なり、このメソッドはすぐに関数を呼び出しません.代わりに新しい関数を返しますので、手動で後で呼び出さなければなりません.
// Make a new function
const boundAddItems = addItems.bind(cart);
// Call it here
boundAddItems('milk', 'jellybeans', 'more jellybeans');
// Or pass it to another function
document.querySelector('button')
.addEventListener('click', boundAddItems)
ボーナス例
イベントリスナーを全体に追加したいとしましょう
<button>
文書で.私たちは.querySelectorAll()
を返します.オブジェクトが配列の場合、.map()
または.forEach()
. 幸運にも、こうすることができます.const buttons = document.querySelectorAll('button');
Array.prototype.forEach
.call(buttons, (el) => el.addEventListener('keydown', ...))
JavaScriptでは、配列は単なるオブジェクトです.そして、nodeist!したがって、異なるオブジェクトを持つ配列のプロトタイプメソッドを使用すると、オブジェクトのような配列であれば、細かくなります.NodeListには、数字のキーのコレクションと、lengthキーが含まれています.
読書ありがとう!
リンク
Function.prototypes.call() | MDN
Function.prototypes.apply() | MDN
Function.prototypes.bind() | MDN
NodeList | MDN
Reference
この問題について(ジャバスクリプト.コール()apply ().bind ()を簡略化しました.), 我々は、より多くの情報をここで見つけました https://dev.to/azmy60/javascript-call-apply-bind-simplified-5d14テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol