blog

call、apply、bind

また、length属性を持ち、0, 1, 2...の添え字で要素にアクセスできますが、A...はありません。...

May 17, 2020 · 2 min. read
シェア

コードの例:

let person = { name: 'emma', sayhi(){ console.log(this.name) } } person.sayhi()

証する

  1. コールコールの使い方は、次のコードのように、1つのthisと1つ以上の引数で関数を呼び出すことです:
let person = { name: 'emma', sayhi(){ console.log(this.name) } } person.sayhi.call({name:'jack'})

呼び出しメソッドの最初のパラメータは thisを指定する必要があることがわかりますが、関数やメソッドが戻り値を持たない場合、最初のパラメータはundefinedまたはnullになります。

function f1(a,b){
 return a+b
}
f1.call(undefined,1,2)
  1. apply 使い方 callの使い方と似ていますが、2番目のパラメーターは配列として渡す必要があります。
function f1(a,b){
 return a+b
}
f1.apply(undefined,[1,2])
  1. バインド使用バインドも thisを定式化することができますが、関数の使用後に直接呼び出すと適用されるとは異なり、バインドバインド thisは、関数を返しますコードの例
this.x = 3 let f1={ x: 1, value(){ return this.x } } let result = f1.value console.log(result()) let result2 = result.bind(f1) console.log(result2())

applyとcallは thisを変更した直後に実行されるのに対し、bindはコンテキストを変更する関数を返すことに注意してください。

function test(a,b,c,d) { var arg = Array.prototype.slice.call(arguments,1); console.log(arg); } test("a","b","c","d"); //b,c,d

Array.prototype.slice.call()また、擬似配列オブジェクトを配列に変換することができ、擬似配列は長さ属性を持っており、要素に0、1、2...添え字を介してアクセスすることができますが、配列のプッシュ、ポップ、およびその他のメソッドはありません。実際の配列に変換するには、call、applyを使用することができます、あなたは方法の配列に変換するメソッドの配列を使用することができます。

var args = Array.prototype.slice.call(arguments);
var args = [].slice.call(arguments);
// ES2015
const args = Array.from(arguments);
const args = [...arguments];

結果を見てわかるように、resultはグローバル・スコープからxを呼び出しているので3を返しますが、result2はbindを使ってthisをf1にバインドしているので、f1からxを呼び出しているので1となります。

Read next

APIを使用するために毎日JavaScriptを使用している人のインベントリ

役割: 配列に要素を挿入し、異なるポイントをプッシュすることです、concatは、要素が配列であることを指定することができます、つまり、挿入の最後に配列。 役割:削除と挿入の両方を実現できる万能王。 以降、共通メソッドの配列(API)について学習完了です。 機能:指定された値に対応するJSON文字列を返します。つまり、オブジェクト型から文字列へ、データ転送でよく使われます。 役割 ...

May 17, 2020 · 6 min read