0
私の元同僚が書いたいくつかのノードコードを読んでいます。私は熟練したjavascriptのプログラマーではありませんが、私には構文的な砂糖のような多くのコードがあります。例えばのため:Javascriptのバインド構文
_.bind(this._work, this),
これは、これは正しいオブジェクトにバインドthis
と機能のコピーを作成します
this._work
私の元同僚が書いたいくつかのノードコードを読んでいます。私は熟練したjavascriptのプログラマーではありませんが、私には構文的な砂糖のような多くのコードがあります。例えばのため:Javascriptのバインド構文
_.bind(this._work, this),
これは、これは正しいオブジェクトにバインドthis
と機能のコピーを作成します
this._work
を呼び出すとまったく同じではありません。これは、関数を渡すときに便利です。
function log(msg) {
document.querySelector('pre').innerText += msg + '\n';
}
var _ = {
bind: function(f, self) {
// Simplified bind implementation
return f.bind(self);
}
};
function runFunc(f) {
f();
}
var obj = {
myName: 'Mike',
printName: function() {
log(this.myName);
}
};
obj.printName(); // "Mike"
runFunc(obj.printName); // undefined
runFunc(_.bind(obj.printName, obj)); // "Mike"
<pre></pre>
'bind'と' extend'人気のアンダースコア法(JSライブラリであること下線)です。詳細については、[_.bind](http://underscorejs.org/#bind)と[_.extend](http://underscorejs.org/#extend)を参照してください。 – csum
私はそれを知っています。私はコードの上記の行はそれらを必要としているのですか? – konquestor
.bind()が必要かどうかはコンテキストに依存し、コンテキストを表示していません。戻り値を使用せずに.bindを呼び出すと、.work()関数は呼び出されません。戻り値がコールバックとして他の関数に渡された場合は、おそらく*。* .bind()が必要です。 – nnnnnn