Мне нужно, чтобы переменная a была видна только в testFunction и была доступна в TestClass.
function testFunction(){
var a = 5;
class TestClass{
construcror(){
//...
this.b = classFunction();
}
classFunction(){
return = a + 5;...
только так как есть, либо передавать нужные переменные в качестве параметров конструктора либо метода. По другому никак. Не совсем понятен пункт про импорт, можешь развернуть его?
@GurebuBokofu, стоит добавить и код, как именно ты пытался делать импорты. И было бы неплохо описание, почему классы зависят от каких-то внешних переменных
@GurebuBokofu, где расположена эта строка? кроме того, нативно браузерам модули из ecma2015 либо вообще не поддерживаются, либо с какими-то ограничениями. Возможно при использовании какого-нибудь сборщика типа бабеля такой проблемы не будет
@Grundy, эта строка идёт первой в файле, даже до начала объявления функции testFunction(). Хорошо, попробую сборщик, но потом, потому что сейчас я их только изучаю и готовлюсь внендрять.
@OlmerDale, задача далеко нетривиальная - CMS, напоминающая Wordpress по принципу добавления блоков (Text, Mediagrid и т. д.).Каждый блок описывается классом, но при этом в каждом классе должен быть доступ к некоторым переменным и функциям.
@GurebuBokofu, но потом, потому что сейчас я их только изучаю и готовлюсь внендрять. - будет тяжело внедрить то, что еще не реализовано нигде
@GurebuBokofu Каждый блок описывается классом, но при этом в каждом классе должен быть доступ к некоторым переменным и функциям. - так и вынеси общие переменные в глобальный сервис и передавай его параметром в нужные классы
Хорошо. Я привильно Вас понял, что со сборщиком я могу импортировать и экспортировать переменные и классы из одного в js файла в другой без ограничений?
Хорошо, могу ли я посреди произвольного js-файла вызвать import { SomeClass } from './test.js' или import { someVariable } from './test.js'?
@Sublihim, в один момент я понял, что без ООП будет обойтись сложно, а каково работать с классами и объектами в обычном js - Вы знаете. Средства ES6 на этом фоне выглядели привлекательно.
@GurebuBokofu я где-то сказал про бросать? :) Весь вопрос в затраченном времени: можно заниматься сразу нетривиальными сложными задачами, убить кучу времени и ничего не сделать.
@Sublihim, знаю. Увидев, что chrome вроде бы проглатывает ES6, не стал сразу использовать Babel-компилятор. Но как я понял из этого разговора, с подключением Babel-компиляции затягивать не стоит.
@Grundy "As a first step, Edge and Chakra now support all declarative import/export syntax defined in ES6 with the exception of namespace import/export (import * as name from “module-name” and export * from “module-name”). To load modules in a page, you can use the <script type=”module”> tag.