Я отправлю этот ответ на этот старый вопрос в любом случае, так как никто еще не опубликовал это раньше.
Вы можете использовать метод bind
в вызовах функций, чтобы определить область, к которой принадлежит this
.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
Обычно каждый раз, когда вы создаете метод - this
принадлежит текущей области действия функции. Переменные из scope2 не могут видеть переменные из scope1.
, например
function(){
// scope 1
this.baz = 'foo';
function(){
// scope 2
this.baz // not defined
};
};
с помощью метода bind
вы можете определить область действия this
внутри функции. Таким образом, используя .bind(this)
, вы сообщаете вызываемой функции, что их собственная область видимости из this
относится к области родительской функции, например:
function(){
// scope 1
this.baz = 'foo';
function(){
// scope 1
this.baz // foo
}.bind(this);
};
поэтому в вашем случае это будет пример использования bind
метода
var simpleClass = function () {
this.status = "pending";
this.target = jqueryObject;
this.updateStatus = function() {
this.target.fadeOut("fast",function () {
this.status = "complete"; //this needs to update the parent class
}.bind(this));
}.bind(this);
};