Как сохранить контекст объекта JavaScript в вызове расширения Safari? - PullRequest
0 голосов
/ 22 февраля 2019

Я пишу расширение для сафари, и когда я использую анонимный обратный вызов функции для запроса на получение расширения, я теряю контекст вызывающего модуля.

Кто-нибудь знает способ поддержания контекста модуля при вызове обратного вызова?

  • Я использую расширение приложения 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);
...