Не удается получить ссылки на классы es6 в расширениях Chrome

1

В настоящее время я пытаюсь обновить расширение chrome с помощью классов es6. Он отлично работает в контексте фоновых сценариев. Но я не могу получить доступ к этим классам на странице ui (т.е. Всплывающее расширение), используя chrome.extension.getBackgroundPage().

background.js

function Foo() { ... }
class Bar { ... }

popup.js

var bg = chrome.extension.getBackgroundPage();
new bg.Foo() // works
new bg.Bar() // Bar is undefined

Я нашел это обходное решение:

background.js

class Bar {}
var exports = { Bar : Bar };

popup.js

var bg = chrome.extension.getBackgroundPage();
new bg.exports.Bar() // works

Любые идеи, почему невозможно получить прямой доступ к классам через объект "bg"?

  • 1
    Какое это имеет отношение к классам ES6? Это работает, если вы используете синтаксис function ES5?
  • 0
    Как показывает пример, это так. Может быть, я сделал это недостаточно ясно? Я немного изменил это. Посмотрите на комментарии к коду: bg.Foo (синтаксис функции) определен, а bg.Bar (синтаксис класса) - нет.
Показать ещё 1 комментарий
Теги:
ecmascript-6
google-chrome-extension

1 ответ

1
Лучший ответ

Любые идеи, почему невозможно получить прямой доступ к классам через объект "bg"?

Да: class es не становятся свойствами глобального объекта, даже если они являются глобальными.

Вам не нужно, чтобы exports объект для обходного пути, вы можете просто использовать

var Bar = class { … };
  • 0
    Работает! Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню