gpt4 book ai didi

javascript - 为什么在此示例中使用 .bind()?

转载 作者:行者123 更新时间:2023-11-29 16:14:15 25 4
gpt4 key购买 nike

var TwitterListModel = function (lists, selectedList) {
// [...]

this.addUser = function () {
if (this.userNameToAdd() && this.userNameToAddIsValid()) {
this.editingList.userNames.push(this.userNameToAdd());
this.userNameToAdd("");
}
};

this.removeUser = function (userName) {
this.editingList.userNames.remove(userName)
}.bind(this);

// [...]
}

我在 this page 中找到了这段代码来自 Knockout JS 示例。它们在对象内部声明。我想了解为什么第一个函数不使用 .bind(this) 而第二个函数使用。

什么时候以及为什么需要使用 .bind(this)?看起来我是否使用它没有什么区别:this 的含义始终指的是声明该方法的对象(而不是它所在的匿名函数)。我说得对吗?

这两种方法都访问 this.editingList,并且在这两种情况下它们指的是同一个变量。

最佳答案

你可以玩fiddle他们提供了这个例子......

如果您尝试删除 .bind(this)你会看到 this (在此方法中添加一个console.log(this))然后引用用户名。这是因为 removeUser函数绑定(bind)在用户名循环中的按钮上 ( <ul data-bind='foreach: userNames'> )。

对于另一个绑定(bind),它附加到表单,然后与整个模型一起使用。

关于javascript - 为什么在此示例中使用 .bind()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19764299/

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