Это классная возможность, но немного не то, вот почему:
- это веб-вью (насколько я могу судить), а я хочу нативный gui (аля delphi например);
- IE - ну тут особо добавить нечего;
- не кроссплатформенно;
- не opensource;
Ну а вообще здорово, конечно, иметь такой инструмент дополнительно. Поправьте если в чем-то ошибаюсь. В любом случае спасибо за ответ!
Для начала: caniuse.com/#search=every - что ж вы за браузеры такие смотрели :)
Что-то мне подсказывает что вы писали $('selector').every - в jQuery действительно такого метода нет. А вот в обычных js массивах - очень давно.
Можете еще раз проверить в консоли: console.log(typeof [].every)? Заметьте: чтобы преобразовать jquery-выборку в массив - используйте метод toArray: $('a').toArray().every;
Как по мне - проблема настолько тривиальна, что свое решение будет проще, чем портировать готовое. Но если это готовое - идеально вписывается в ваш кейс - почему нет.
Вот например markgx.github.io/jquery-check-all jquery плагин. Если у вас используется react/angular и прочие - ищите специфичный для них компонент.
Почему же путаница, вы все правильно поняли: мне нужен JS движок (причем "нормальный js" - es6/es7, так что JScript - не вариант) + нативный GUI. Раз уж я сам пишу, что мне не нужен браузер в любом виде - я понимаю, что библиотеки для работы с DOM не будут работать, но у js есть и другие библиотеки. Мне не нужна "вся мощь", мне нужна принципиальная возможность. Про ActiveX - почитаю, но в том что нашел беглым поиском он упоминается как расширение IE. Буду благодарен ссылке на статейку о том, что вы имели ввиду.
А можете вкратце описать, что можно оставить на js, а что можно вынести в C++? Можно ли, например, сделать дизайнер форм в ран-тайм используя только js? Можно ли на js, например, отправить http запрос?
А вы, получается искали графические библиотеки под Lazarus? Упомину про библиотку Cairo (https://ru.wikipedia.org/wiki/Cairo) - если вдруг пропустили. Т.е. вы используете граф. библиотеку и делаете с ее помощью свои виджеты? А основная разработка ведется при этом на Lazarus или JavaScript? Есть ли что-то в открытом доступе?
Виталий Инчин ☢: я понимаю, что выведет этот код и понимаю почему. И на самом то деле ничего не изменилось с точки зрения прототипов, for-in также лезет в прототипы.. Тут дело не в прототипных свойствах, а в "перечисляемости" (enumerable). Вот тут можно почитать про это https://developer.mozilla.org/ru/docs/Web/JavaScri... Можно также поэксперементировать с этим всем. В частности, [].hasOwnProperty('length') - вернет true. Почему в данном случае мы не натыкаемся на мусор итерируя массив for-in - потому что ни в цепочке прототипов, ни в экземпляре нет перечесляемых свойств кроме индексов массива.
Виталий Инчин ☢: в общем-то на самом деле я просто опустил hasOwnProperty... Однако необходимость его использования на самом деле также сомнительна: for-in пробежится по перечисляемым свойствам https://developer.mozilla.org/ru/docs/Web/JavaScri... , и там не будет ничего лишнего. Возможно в старых браузерах это приведет к ошибкам, но в данном конкретном случае (в коде уже есть и Object.keys и forEach, да и сама постановка задачи), это может оказаться не необходимым. Если вы все таки уверены, что hasOwnProperty тут необходим, было бы неплохо, если бы вы поделились примером, когда это может навредить.
soofftt91: P.S. советую попробовать и сравнить производительность, возможно это решит вашу проблему. Но лучше, конечно, вообще избегать таких ситуаций.
soofftt91: https://habrahabr.ru/post/247857/ ("Если вам посоветуют использовать цикл for...in, помните, что перебор массивов — не то, для чего он предназначен. Вопреки распространенному заблуждению цикл for...in перебирает не индексы массива, а перечислимые свойства объекта.
Тем не менее, в некоторых случаях, таких как перебор разреженных массивов, for...in может оказаться полезным, если только соблюдать при этом меры предосторожности, как показано в примере ниже")
Если не ошибаюсь, for-in будет обходить ваш разреженный (https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D... массив как объект - т.е. переберая только существующие свойства. Еще советую почитать про Iterator'ы и генераторы.
zedxxx: Немного не понял. Т.е. на Delphi нельзя писать Dll'ки и свободно их распространять? По идее пользователем ПО в моем случае будет програмист использующий эту самую Dll.
Где вообще пролегает эта грань?
Dll - ведь, по сути (в моем представлении), представляет собой не компонент Delphi, а конечный продукт (не знаю насколько это уместно, конечно) - просто целевая аудитория у этого продукта - другие программисты.
badgoto: могу так же сказать, что я пришел к выводу, что без сервера (например ajax не будет работать с файловой системой напрямую) и изменения исходников - т. е. на чисто клиентском js - такое сделать невозможно. Вижу 2 пути: оборачивать все js файлы в специфичную конструкцию, а также подключать их в ручную. Либо использовать сервер (в моем случае он был на Node.js) для автоматического оборачивания клиентского js. Т. е. в итоге либо много возни с исходниками, либо получается тот же webpack / browserify, только без склейки в один файл - решения как добиться такого так и не встретил.