Метод, обычно используемый в инфраструктурах, состоит в том, чтобы позволить вызывающей стороне решить, каким должен быть контекст this
для функции обратного вызова.Таким образом, функция FetchData
выглядит так (спасибо @Andy за сообщение о области по умолчанию, когда контекст имеет значение null или не определено - это глобальный объект),
this.FetchData = function(callback, context) {
callback.call(context, data);
};
При вызове FetchData
, passObject1
в качестве контекста для обратного вызова,
Object2.FetchData(this.OnData, this);
Другой вариант - связать функцию OnData
с Object1
, используя Function.prototype.bind
Object2.FetchData(this.onData.bind(this));