Я пишу расширение для сафари, и когда я использую анонимный обратный вызов функции для запроса на получение расширения, я теряю контекст вызывающего модуля.
Кто-нибудь знает способ поддержания контекста модуля при вызове обратного вызова?
- Я использую расширение приложения Safari, а не старое расширение Safari Тот же код работает вРасширение Chrome.Вероятно, из-за способа, которым Safari обращается к внешнему расширению приложения.
var MyModule = (function () {
var _privateVariable = "test";
var doStuff = function () {
SafariExtensionUtilities.Get("https://test.com", function(success, data, response){
//value of private variable no longer set and is undefined
var x = typeof _privateVariable === "undefined"; //true
//value of public variable is set and has correct value
var y = typeof MyModule.PublicVariable === "undefined"; //false
var z = MyModule.PublicVariable === "test"; //true
});
};
return {
PublicVariable: _privateVariable,
};
})();
Код обратного вызова
eval("var fn = " + event.message.eventName);
callback(true, data, response);