0
我正在閱讀由我的前同事編寫的一些節點代碼。我不是一個熟練的JavaScript程序員,但我看到很多代碼,看起來像我的語法糖。對於如:Javascript綁定語法
_.bind(this._work, this),
這不就是正好與調用
this._work
我正在閱讀由我的前同事編寫的一些節點代碼。我不是一個熟練的JavaScript程序員,但我看到很多代碼,看起來像我的語法糖。對於如:Javascript綁定語法
_.bind(this._work, this),
這不就是正好與調用
this._work
這將創建this
功能結合於正確的對象的副本。當你傳遞函數時,這會很有用。
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