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