gpt4 book ai didi

javascript - 无法读取未定义的 Backbone.js 属性 'bind'

转载 作者:行者123 更新时间:2023-12-01 00:32:01 25 4
gpt4 key购买 nike

我有以下带有多个绑定(bind)的函数...

showDialog: function(data) {
var dialog = new dialog({
onOk: function(text) {

var obj = {
data: text.data
};

this.model.save(obj, {
method: 'PUT',
success: function() {
this.success().bind(this)
}.bind(this)
});
}.bind(this)
});
Main.dialogArea.show(dialog);
}

虽然代码有效,但它在控制台中抛出以下错误...

Uncaught TypeError: Cannot read property 'bind' of undefined

该错误与以下行 this.success().bind(this) 有关。

我意识到,如果我使用 var self = this 代替,这个问题就会得到解决...

showDialog: function(data) {
var self = this;
var dialog = new dialog({
onOk: function(text) {

var obj = {
data: text.data
};

self.model.save(obj, {
method: 'PUT',
success: function() {
self.success()
}
});
}
});
Main.dialogArea.show(dialog);
}

如果我这样做,错误就会消失。知道这是为什么吗?这两种情况不应该是一样的吗?我没有使用 ES6,所以无法使用箭头函数,我想使用 bind()

最佳答案

应该是

this.success.bind(this)

而不是this.success().bind(this)。当前您正在调用该函数,函数返回 undefined 并且您正在对其调用 .bind

旁注:

既然你这样做了

success: function() {}.bind(this)

您不必在其中绑定(bind)直接方法调用,即

success: function() {
this.success();
}.bind(this)

应该可以,或者只是

success: this.success.bind(this)

关于javascript - 无法读取未定义的 Backbone.js 属性 'bind',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58455648/

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