[JS]関数メソッド呼び出し、適用
8531 ワード
関数を実行する方法には、関数()を使用して関数を呼び出す方法、新しいキーワードを使用して呼び出す方法、関数メソッドを使用して呼び出す方法、アプリケーションを使用して呼び出す方法があります.
呼び出しメソッドにおけるパラメータの役割を詳細に説明します.
func.call(thisArg[, arg1[, arg2[, ...]]])
func,apply(thisArg, [argArray])
thisArg:func呼び出しで指定されたthis値
最初のパラメータとして入力されたthisArgは、関数の実行時にthisを決定します.
2番目から入力したパラメータがcall時に関数実行時に渡されるパラメータリストを受信し、applyでパラメータの単一配列を受信します.
次の例では、2つの方法の違いを説明します.
次の例ではcall、applyを使用して並べ替えます.
function add(x,y) {
console.log(x + y);
}
add(2,8); // 10
add.call(null, 2, 8); // 10
add.apply(null, [2,8]); // 10
上記の例では、呼び出しの仕方は異なりますが、結果は同じです.呼び出しメソッドにおけるパラメータの役割を詳細に説明します.
call & apply
func.call(thisArg[, arg1[, arg2[, ...]]])
func,apply(thisArg, [argArray])
thisArg:func呼び出しで指定されたthis値
最初のパラメータとして入力されたthisArgは、関数の実行時にthisを決定します.
2番目から入力したパラメータがcall時に関数実行時に渡されるパラメータリストを受信し、applyでパラメータの単一配列を受信します.
次の例では、2つの方法の違いを説明します.
function add(x,y) {
this.val = x + y;
console.log(this.val);
}
let obj = {
val : 0
}
add.call(obj, 2, 8);// 10
add.apply(obj, [2, 8]);// 10
配列をパラメータとしてapplyに送信
let arr = [10, 25, 15, 3, 21];
Math.max(arr);// NaN
Math.max.apply(null, arr);// 25
Math.max()のパラメータはNumberTypeのみですがarrは配列なのでNaNを返します.この場合、applyを使用してarrの最値を検索できます.次の例ではcall、applyを使用して並べ替えます.
function moreThanFive(str) {
return str.length > 5;
}
let arr = ['one', 'two', 'three', 'four', 'five'];
arr.filter(moreThanFive);// ['three']
Array.prototype.filter.call(arr, moreThanFive);// ['three']
Array.prototype.filter.call(arr, [moreThanFive]);// ['three']
でもここでCallやApplyを使う必要はありませんしかし,アレイではなく類似のアレイであれば,Array法を用いることはできない.この場合,callとapplyを用い,類似アレイでもArrayの方法を用いることができる.Reference
この問題について([JS]関数メソッド呼び出し、適用), 我々は、より多くの情報をここで見つけました https://velog.io/@ghd64845/JS-함수-메서드-call-apply-사용テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol