私はES5Function.prototype.bind
とカリー化引数(基本的に関数のデフォルト引数を作成する)の大ファンです。
私はそれで少し浮気していました、しかし私は私の人生のためにもう自分自身の構造を理解することができません。これは私の遊び場です:
function hello( arg1, arg2 ) {
console.log('hello()');
console.log('"this" is: ', this);
console.log('arguments: ', arguments);
}
var foo = Function.prototype.call.bind( hello,{what: 'dafuq'}, 2 );
foo( 42 );
このためのログ出力は次のとおりです。
hello()
"this" is: Object{ what="dafuq" }
arguments: [2,42]
しかし、私は、オブジェクトが内部{what: 'dafuq'}
の参照としてどのように進むのかを理解していません。私が理解している限り、私たちはへのバインドされた呼び出しを作成しています。MDNの概要をすばやく確認しましょう。this
foo
Function.prototype.call
.bind()
fun.bind(thisArg[, arg1[, arg2[, ...]]])
したがって、thisArg
for.call
はhello
関数であり、その後に引数リストが続きます。基本的に何が起こるかはこれです
Function.prototype.call.call( hello, {what: 'dafuq'}, 2);
...うーん、今、私の脳は少し痛いです。私は今何が起こるかについての考えを持っていると思いますが、誰かがそれを詳細に説明するための素晴らしいしっかりした言葉を見つけてください。
- どのよう
{what: 'dafuq'}
になりますthis reference