Как назначить функцию объекту окна при использовании модуля ES6? - PullRequest
0 голосов
/ 04 февраля 2019

Я работаю со сторонним скриптом, и мне нужно назначить некоторые функции объекту окна, чтобы эти функции были доступны для этого стороннего скрипта (который будет работать в том же окне браузера, вызываемом изтот же домен).Я должен сделать это, используя ES6, используя let и модули (import / export).

В ES5 я могу сделать следующее:

//index.html
<script src="main.js"></script>
//third-party script will use window.myObj.blurt()
<script src="third-party-script.js"></script>
//main.js
var myObj = {};

myObj = {
  blurt: function(){
    console.log("Hello."); 
  }
}

blurt() теперь доступно для вызова из объекта window.Я могу поместить это в консоль браузера, и она будет работать: window.myObj.blurt().

Я бы хотел сделать это в ES6:

//index.html - note the type="module"
<script type="module" src="main.js"></script>
//third-party script will use window.myObj.blurt()
<script src="third-party-script.js"></script>
//main.js
import './my-window-functions.js';

//other existing code
//my-window-functions.js - NOT the third-party script - just my ES6 module system
let myObj = {};

myObj = {
  blurt: function(){
    console.log("Hello.");
  }
}

Сейчасwindow.myObj.blurt() - это undefined.Как назначить функции для объекта window в этой экосистеме?

1 Ответ

0 голосов
/ 04 февраля 2019

В my-window-functions.js необходимо экспортировать myObj.

let myObj = {};

    myObj = {
      blurt: function(){
        console.log("Hello.");
      }
    }
export {myObj};

Затем в main.js необходимо импортировать myObj и назначить его объекту окна вручную.

import { myObj } from'./my-window-functions.js';

window.myObj  = myObj;

Тогда ваш сторонний скрипт может использовать window.myObj.blurt().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...