メモをとる理由: JavaScript の人気の傾向は止められず、派生した AngularJs、Node.js、および BootStrmp は、中小企業の IT 部門のバックエンド開発においてその利点をますます失いつつあります。 IT は人生を変える .Net プログラマーとして 3 年間活動してきましたが、保守的であることは実際には恐怖であり、人生には情熱とモチベーションが必要であると深く感じています。
本文:
1. apply().call() と binding() は何をしますか?
これら 3 つはすべて、メソッド内の this のポイントを変更します
2. これは何ですか?
これは、setTimeout メソッドの this など、現在呼び出しているメソッドの実行オブジェクトを指します
1 setTimeout(function(){ 2 console.log(this) 3 },1000)
出力結果:
Window {external: Object, chrome: Object, document: document, Alax: Object, a2: Object…}
Window.setTimeout が Window オブジェクトのメソッドである場合、setTimeout が完全に呼び出されるため。
別のオブジェクトを定義する
var Alax={ name:'Alax', age:27, fuc:function(){ return this.age; } }
論理的に言えば、console.log(Alax.fun)を使用すると27が出力されるはずですが、実際の状況は未定義です。 Alax オブジェクトの外部で呼び出された場合、実際のオブジェクトは Window であり、Window には age 属性が含まれていないため、このポインターは変更されており、考えられるものを比較するには概念が完了するまで待つ必要があることを意味します
。3. call、apple、bind の違い
1. パラメータの比較
call のパラメータ形式は (thisvalue, arg1) です
g1、ar2...)
この値以下のパラメータは、渡される this ポインタを参照します。以下のパラメータは、メソッドのパラメータに対応します。渡された場合は、引数で取得できます
2. 戻り値の比較
すべてのパラメータを引数に渡し、呼び出し結果を直接返す
バインドとは、メソッドの実行後に受信値を返し、新しい
関数を返すことを指します。関数は () で呼び出す必要があります
要約: 上記。呼び出しメソッドは
console.log((Alax.fuc).call(Alax)) console.log((Alax.fuc).apply(Alax)) console.log((Alax.fuc).bind(Alax)())
Alax={ name:'Alax', age:27, fuc:function(num){ this.age+=num return this.age; } } console.log((Alax.fuc).call(Alax,1)) console.log((Alax.fuc).apply(Alax,[1])) console.log((Alax.fuc).bind(Alax)(1))
以上がJs のこれは、apply().call(),bind() の問題を示しています。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。