Javascript 使用underline.js将其绑定到嵌套函数中

Javascript 使用underline.js将其绑定到嵌套函数中,javascript,underscore.js,Javascript,Underscore.js,我有一个关于underline.js中的绑定功能的问题 假设我们有以下对象“房间”: 在我的注释所指示的行中,“this”绑定到窗口。这是意料之中的行为 假设我们希望将它绑定到“room”对象。是否可以使用下划线.js的bind方法实现这一点 注意:我知道我可以用老的“that=this”例程处理这个问题。但是我对此不感兴趣。是的,你可以用下划线来做这件事 您可以通过以下方式使用绑定: 代码: var nestedFunction = _.bind(function (nameOfPerson

我有一个关于underline.js中的绑定功能的问题 假设我们有以下对象“房间”:

在我的注释所指示的行中,“this”绑定到窗口。这是意料之中的行为

假设我们希望将它绑定到“room”对象。是否可以使用下划线.js的bind方法实现这一点


注意:我知道我可以用老的“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我知道,但是为了让这个答案更好,你应该在答案中包含解决方案的重要部分。