Javascript 使用underline.js将其绑定到嵌套函数中
我有一个关于underline.js中的绑定功能的问题 假设我们有以下对象“房间”: 在我的注释所指示的行中,“this”绑定到窗口。这是意料之中的行为 假设我们希望将它绑定到“room”对象。是否可以使用下划线.js的bind方法实现这一点Javascript 使用underline.js将其绑定到嵌套函数中,javascript,underscore.js,Javascript,Underscore.js,我有一个关于underline.js中的绑定功能的问题 假设我们有以下对象“房间”: 在我的注释所指示的行中,“this”绑定到窗口。这是意料之中的行为 假设我们希望将它绑定到“room”对象。是否可以使用下划线.js的bind方法实现这一点 注意:我知道我可以用老的“that=this”例程处理这个问题。但是我对此不感兴趣。是的,你可以用下划线来做这件事 您可以通过以下方式使用绑定: 代码: var nestedFunction = _.bind(function (nameOfPerson
注意:我知道我可以用老的“that=this”例程处理这个问题。但是我对此不感兴趣。是的,你可以用下划线来做这件事 您可以通过以下方式使用绑定: 代码:
var nestedFunction = _.bind(function (nameOfPerson) {
this.person = nameOfPerson;
},this);
addPerson: function (name) {
this.count += 1;
var nestedFunction = function (nameOfPerson) {
this.person = nameOfPerson;
};
nestedFunction.call(this,'dave');
}
请注意作为第二个参数传递给bind
的this
,这使得this
引用您想要的内容,而不是窗口
也可以通过使用在不绑定下划线的情况下执行此操作
代码:
var nestedFunction = _.bind(function (nameOfPerson) {
this.person = nameOfPerson;
},this);
addPerson: function (name) {
this.count += 1;
var nestedFunction = function (nameOfPerson) {
this.person = nameOfPerson;
};
nestedFunction.call(this,'dave');
}
我知道这可能对这个问题没有帮助,但我无意中发现了这个关于主干的问题 我试着在回电话时先保存一个模型,然后再保存另一个模型。他是工作的最终结果。但是u.bind可以用于任何其他无法访问的函数
this.information.set('name', 'Bob');
this.information.save(null,
{
success: _.bind(function(model, response)
{
console.log('Saved Information');
this.review.set('review', "This is a test Review");
this.review.save(null,
{
success: function(model, response)
{
console.log('Saved Review');
location.reload();
}
});
}, this)
});
+1但是,
nestedFunction.call
将不起作用,因为生命的结果是分配给它的,而不是函数本身。谢谢@thefourtheye。实际上,我已经更新了代码片段,它不再是iLife
。代码在下面的JSFIDLE链接中。是的,它是一个IIFE,不能与IIFE一起工作。如果要使用nestedFunction.call
,则必须更改它。@niranjanbarawake谢谢。我不知道我为什么会有这样的生活。我向四人道歉。但这并不是浪费时间。我没想到会用Bind这样。我还是个笨蛋。再次感谢。@Niranjanbarawake我知道,但是为了让这个答案更好,你应该在答案中包含解决方案的重要部分。