gpt4 book ai didi

javascript - 使用 Underscore.js 将其绑定(bind)到嵌套函数中

转载 作者:行者123 更新时间:2023-11-29 10:44:12 25 4
gpt4 key购买 nike

我对 Underscore.js 中的 Bind 特性有疑问假设我们有以下对象“房间”:

var person = 'Bob';

$(function () {

var room = {
capacity: 10,
exits: 2,
count: 0,
person: '',
addPerson: function (name) {
this.count += 1;

var nestedFunction = function (nameOfPerson) {

// this is bound to window
this.person = nameOfPerson;

}(name);
}
};

room.addPerson('dave');
});

在我的注释指示的行中,“this”绑定(bind)到窗口。这是预期的行为。

假设我们想将它绑定(bind)到“房间”对象。是否可以使用 Underscore.js 的绑定(bind)方法来做到这一点。

注意:我知道我可以用老式的“that = this”例程来处理这个问题。但我对此不感兴趣。

最佳答案

是的,您绝对可以使用 Underscore 的 bind 来做到这一点.

你可以这样使用绑定(bind):

代码:

 var nestedFunction = _.bind(function (nameOfPerson) {
this.person = nameOfPerson;
},this);

请注意 this 作为第二个参数传递给 bind,这使得 this 引用您想要的而不是 窗口

JSFIDDLE

你也可以在没有 Underscore 绑定(bind)的情况下使用 call 来做到这一点.

代码:

   addPerson: function (name) {
this.count += 1;
var nestedFunction = function (nameOfPerson) {
this.person = nameOfPerson;
};
nestedFunction.call(this,'dave');
}

JSFIDDLE

关于javascript - 使用 Underscore.js 将其绑定(bind)到嵌套函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22684877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com