last day (295 days later) » 

8:31 AM
0
Q: ES2015: Сделать локальную переменную видимой в классе

Gurebu BokofuМне нужно, чтобы переменная a была видна только в testFunction и была доступна в TestClass. function testFunction(){ var a = 5; class TestClass{ construcror(){ //... this.b = classFunction(); } classFunction(){ return = a + 5;...

 
только так как есть, либо передавать нужные переменные в качестве параметров конструктора либо метода. По другому никак. Не совсем понятен пункт про импорт, можешь развернуть его?
связанный вопрос, почему классы не всплывают
ну и если у тебя такое сложное взаимодействие, то скорее всего ты что-то делаешь не так
 
@Grundy, добавил сообщения об ошибках из консолей браузеров.
 
@GurebuBokofu, стоит добавить и код, как именно ты пытался делать импорты. И было бы неплохо описание, почему классы зависят от каких-то внешних переменных
 
@Grundy добавил, правда там только одна строчка.
 
@GurebuBokofu, где расположена эта строка? кроме того, нативно браузерам модули из ecma2015 либо вообще не поддерживаются, либо с какими-то ограничениями. Возможно при использовании какого-нибудь сборщика типа бабеля такой проблемы не будет
 
8:31 AM
@Grundy, эта строка идёт первой в файле, даже до начала объявления функции testFunction(). Хорошо, попробую сборщик, но потом, потому что сейчас я их только изучаю и готовлюсь внендрять.
 
@GurebuBokofu, а что за textModule тогда, если все классы внутри testFunction? где описан этот модуль? что в нем?
 
@OlmerDale, задача далеко нетривиальная - CMS, напоминающая Wordpress по принципу добавления блоков (Text, Mediagrid и т. д.).Каждый блок описывается классом, но при этом в каждом классе должен быть доступ к некоторым переменным и функциям.
 
@GurebuBokofu, но потом, потому что сейчас я их только изучаю и готовлюсь внендрять. - будет тяжело внедрить то, что еще не реализовано нигде
@GurebuBokofu Каждый блок описывается классом, но при этом в каждом классе должен быть доступ к некоторым переменным и функциям. - так и вынеси общие переменные в глобальный сервис и передавай его параметром в нужные классы
 
Это я собирался классы в модуль вынести.
Когда понял, что не выйдет, убрал отдельный файл.
 
Вы угараете чтоль? какое cms когда даже основ не знаете?
 
8:36 AM
А это никого не волнует. Поставлена задача - надо сделать.
 
ну тогда ставьте сборщик, как Вам уже сказали без него не получится.
 
Хорошо. Я привильно Вас понял, что со сборщиком я могу импортировать и экспортировать переменные и классы из одного в js файла в другой без ограничений?
 
я не знаю что такое ограничения, но со сборщиком Вы сможете сделать то, что делают все!
 
а с чего вы схватились за ES6?
 
Хорошо, могу ли я посреди произвольного js-файла вызвать import { SomeClass } from './test.js' или import { someVariable } from './test.js'?
@Sublihim, в один момент я понял, что без ООП будет обойтись сложно, а каково работать с классами и объектами в обычном js - Вы знаете. Средства ES6 на этом фоне выглядели привлекательно.
 
8:47 AM
@GurebuBokofu в спецификации нет ограничений на то, в каком месте писать import
 
@GurebuBokofu. Это, конечно хорошо. Но не все браузеры поддерживают ES6. import не поддерживается ни одним браузером.
 
@GurebuBokofu судя по вопросам, с ООП тебе будет еще сложнее :-)
 
9:01 AM
@Grundy, это не повод бросать задуманное и заниматься исключительно тривиальными задачами.
 
@GurebuBokofu я где-то сказал про бросать? :) Весь вопрос в затраченном времени: можно заниматься сразу нетривиальными сложными задачами, убить кучу времени и ничего не сделать.
 
@Sublihim, знаю. Увидев, что chrome вроде бы проглатывает ES6, не стал сразу использовать Babel-компилятор. Но как я понял из этого разговора, с подключением Babel-компиляции затягивать не стоит.
 
@Sublihim по твоей ссылке EDGE поддерживает модули :)
 
@Grundy, "ничего не сделать" не получится, потому что уже много сделано, хотя безусловно предстоит решить ещё много задач. Теперь главное - завершить.
 
@GurebuBokofu под ничего не сделать имелся ввиду конечный продукт.
 
9:08 AM
@Grundy одним EDGE сыт не будешь :)
 
@Sublihim это другой вопрос
 
@Grundy, я сделаю конечный продукт, отсутствие опыта - не повод прекращать проект.
 
@GurebuBokofu Весь вопрос в затраченном времени - через сколько ты планируешь сделать конечный продукт?
 
@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.
 
@Grundy, где-то через пол-года. Пока никто не торопит, планирую задачи только на неделю вперёд.
 
9:14 AM
@Sublihim иии? :-)
@GurebuBokofu вот через пол-года и стоит вернуться к этому разговору :)
 
@Grundy все-равно поддержку надо включать флагом
:)
 
@Grundy К какому именно? У нас тут уже две темы ответвилось как минимум :)
 
@GurebuBokofu а вторая какая?
 
1) EDGE 2) Время, которое займёт выполнение поставленных задач при таком текущих навыках
 
9:31 AM
@GurebuBokofu EDGE не ветка, это единственный пример браузера, в котором заявлено что он поддерживает модули
 

  last day (295 days later) »