У меня есть следующая функция с несколькими привязками ...
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: Невозможно прочитать свойство 'bind' из неопределенного
Ошибка связана со следующей строкой 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()
.