Ответы пользователя по тегу JavaScript
  • Как сделать переход по ссылке с помощью input?

    Ni55aN
    @Ni55aN
    decodeURIComponent('имя_домена/результаты.htm/%3Fkek%26results=введенный_текст')
    Ответ написан
  • Как реализовать это в canvas?

    Ni55aN
    @Ni55aN
    на одном canvas нельзя рисовать по разному из нескольких контекстов, все они сводятся к одному canvas.

    Может вообще canvas'ы не нужны? Почему бы не работать через DOM (там фактически все есть - фильтры, трансформации)?
    Ответ написан
    Комментировать
  • Какие есть игровые движки, генерирующие wasm?

    Ni55aN
    @Ni55aN
    Ответ написан
    Комментировать
  • Как правильно организовать последовательно выполнение одной функции js?

    Ni55aN
    @Ni55aN
    Используйте Promise

    function forse(){
      return new Promise((res,req) => { // и в случае ошибки не забудьте вызвать req
         setTimeout(function(){
        $.post(
          "post.php",
          {
                   params: params,
                   count: count
          },	
          function(data){
               $("#result").append(data);
                res();
          }
        );
      },5000);
      });
    }


    Для актуальных браузеров c поддержкой async/await (должно быть внутри async функции)
    for(let i=0;i<10;i++)
        await forse();


    И для тех, что постарше:
    var i = 0;
    function iter(){
        if(++i>10)return;
            return forse().then(iter)
    }
    iter();
    Ответ написан
    5 комментариев
  • Как работать с байтами в JavaScript?

    Ni55aN
    @Ni55aN
    Для массива байтов есть типизированный Uint8Array

    Из строки в Uint8Array:
    var te = new TextEncoder("utf-8"); 
    te.encode(string); // возвращает Uint8Array


    Из массива (в данном примере целые 32-х битные)
    new Uint8Array(new Int32Array([435678]).buffer) // вернет Uint8Array с [222, 165, 6, 0]
    Ответ написан
    1 комментарий
  • Как защитить шаблон?

    Ni55aN
    @Ni55aN
    Сам шаблон можно скопировать как он есть, но если применить js, то этим можно усложнить отображение на другом домене.

    1. в обфусцированном js (чем крупнее, тем лучше) задать функции для отображения частей страницы с проверкой location.href
    2. загружать те же части через xhr, можно с проверкой по времени о начале загрузки страницы и завершения, после которого закрыть доступ к загрузке компонентов

    Это может только усложнить копирования, но не дает какой-либо гарантии. Скорее больше вам усложнит задачу)
    Ответ написан
  • Откуда берется babelHelpers?

    Ni55aN
    @Ni55aN Автор вопроса
    Оказывается, нужен transform-runtime , при разработке достаточно подключить этот плагин, и тогда будут определены методы для создания класса и т.п. из импортов /babel-runtime/helpers/*. А babelHelpers, это судя по всему "babel-runtime", подключаемый на клиенте

    Стоило только задать вопрос после пары часов поисков, так сразу нашел ответ)))
    Ответ написан
    Комментировать
  • Почему не выполняется междоменный fetch с creaditials: include?

    Ni55aN
    @Ni55aN Автор вопроса
    Оказывается, дополнение к Опере CORS мешало.
    + к этому Access-Control-Allow-Creditials добавить забыл
    Ответ написан
    1 комментарий
  • Blur содержимого под блоком - как реализовать?

    Ni55aN
    @Ni55aN
    CSS такого делать не умеет. Помню, когда то находил реализации под Safari, но дальше iOS это не пошло. Поэтому единственный вариант:
    продублировать все что в фоне и размыть. Достаточно легко реализуется для фона-картинки, и почти нереализуемо для всех возможных элементов, так как все что в фоне нужно повторно добавить в нужный блок, обрезать, размыть, и при этом нужно соблюдать чтобы все совпадало

    jsfiddle.net/SvH6w/6
    Ответ написан
    Комментировать
  • Как понять замыкания, а в частности, присвоения вида fn = function()?

    Ni55aN
    @Ni55aN
    Почему первый не работает? Там все как надо:
    при вызовеcreateCounter()инициализируется numberOfCallsсо значением 0 и возвращается функция, которая "видит" эту переменную. В дальнейшем вызове этой анонимной функции она все так же будет видеть numberOfCalls.

    В первом случае при вызове createCounter заново каждый раз создается переменная с 0
    Во втором случае при вызове fn()одна и та же анонимная функция использует одну и ту же переменную numberOfCalls
    Ответ написан
    2 комментария
  • JS библиотека для обработки и процедурное генерации изображений?

    Ni55aN
    @Ni55aN Автор вопроса
    Так и не удалось найти подходящей, тем более требования увеличились (что касается быстродействия).

    Подготовил дебютную версию своей библиотеки texturity.js, которая проводит рисование через WebGL (что несравнимо с обычным Canvas) и работает в одном контексте, что позволяет без каких либо задержек рисовать на разных экземплярах Texturity.Canvas
    Ответ написан
    Комментировать
  • В каких случаях использовать ООП?

    Ni55aN
    @Ni55aN
    ООП уместно использовать для тех задач, где компоненты приложения будет удобнее разделить на некоторые абстракции (сущности)

    Особенности:
    • - нет необходимости применять ООП для очень мелких программ/скриптов
    • + желательно использовать в программах, которые потребуется поддерживать и улучшать
    • + необходимо использовать в больших программах (чем больше функций должно выполнять ПО, тем сложнее будет их все правильно структурировать и реализовать)


    Например, в самом простом калькуляторе нет необходимости что-то представлять в виде объектов, достаточно функционального стиля (все что от него требуется, это методы add, sub, div, mul и т.д.)
    Если что-то посложнее, тогда с одними функциями будет сложно работать, и будет сложнее разбираться в коде (поддерживать его) и понимать какая часть кода за что отвечает (нажатие кнопки, вывод результата).
    В случае с ООП можно такие компоненты представить в виде классов, тем самым оградить нужные данные и методы от остальных (классы Button, Field, и Operation, например). Конечно, и кода станет больше, но зато потом будет легче в нем разобраться, чем перебирать все функции и места, где они выполняются.
    3 принципа ООП:
    • инкапсуляция - изолирование некоторых данных и методов от прямого внешнего воздействия
      Например, у Button есть имя, но оно не должно быть доступно как public, чтобы его не могли изменять как попало, а изменять только через метод setName, который будет контролировать что можно ставить как имя кнопки, а что нельзя

    • наследование - позволяет придать некоторому классу те же свойство, что и у другого.
      Часто встречающийся пример - Транспорт, имеет методы движение(), остановить(). Те же самые методы по сути должны иметь все виды транспорта, и чтобы в классах Велосипед и Автомобиль заново не прописывать все эти методы, можно унаследовать их от класса Транспорт. Тем более это связано со следующим принципом, по которому не нужно знать в итоге в каком Транспорте мы находимся и как он работает, а достаточно лишь знать, что он умеет двигаться и останавливаться

    • полиморфизм - позволяет работать с данными не заботясь о том, какие дополнительные свойства имеют эти данные (объект) или какого они типа
      Например, есть класс Месседжер, он имеет метод отправить(что-то). В виде параметра нужно передать то, что нужно отправить, а это может быть как текст, так и файл. Это пример статического полиморфизма (хотя в JS его трудно назвать таковым, так как он с динамической типизацией и не имеет перегрузки методов, и все разборки по поводу того, что делать с данными разного типа происходят при выполнении программы). В динамическом необходимо знать только то, что умеет делать определенный объект и не важно чем он есть на самом деле и как он это делает (см. пример с классом Транспорт выше)

    Ответ написан
    2 комментария
  • Что быстрее фильтрует данные: sql или js?

    Ni55aN
    @Ni55aN
    Конечно же SQL'ом это лучше делать. При паре десятков записей может и не будет заметна разница в производительности, но если в базе будет тысяча записей, тогда считывать их все и передавать на клиент будет очень затратно
    Ответ написан
    Комментировать
  • Как изменить начало координат canvas?

    Ni55aN
    @Ni55aN
    context.transform(1, 0, 0, -1, 0, canvas.height)

    Источник
    Ответ написан
    Комментировать
  • Почему JS думает что 0.1 не равен 0.1?

    Ni55aN
    @Ni55aN
    Можно только определить по какой-то точности, но это значение зависит от величины чисел, которые использовались при вычислениях. Например
    Не
    x === y
    а
    Math.abs(x-y) < Number.EPSILON
    Для этого примера ок, но если x=9.03-9.02, y=0.2-0.1. тогда не работает, и нужно брать точность побольше
    Ответ написан
    Комментировать
  • Как поймать исключение в асинхронной функции?

    Ni55aN
    @Ni55aN
    в reject нужно передавать
    async function test() {
      return new Promise((res,rej) => {
        setTimeout(() => {
          try {
          do1()
          res()
          }
          catch(e) {
          rej(e);
          }
          console.log('After throw')
        }, 2000)
      })
    }
    Ответ написан
    Комментировать
  • Есть ли библиотека для создания интерфейса редактора нодов?

    Ni55aN
    @Ni55aN
    https://github.com/Ni55aN/D3-Node-Editor

    Понимаю, что вопрос для вас неактуален, но может кто-то еще заинтересуется))
    Ответ написан
    Комментировать
  • Можно-ли считать WebAssembly "убийцей" JS?

    Ni55aN
    @Ni55aN
    Никуда JS не денется, так как на него подсело много разработчиков, и переходить на С++ (он же компилится в WASM) или что-то подобное они не станут. Ведь кому нужна лишняя головная боль (и выстрелы по ногам), чтобы ускорить приложение, в котором от силы все операции занимают долю секунды.

    Конвертеры, 3D игры, обработка изображений и т.п. - вот где важна производительность, остальное и так быстро работает.
    Ответ написан
    1 комментарий
  • ECMAScript это язык или правила для написания языка?

    Ni55aN
    @Ni55aN
    bddbccda05b24507a09f0e1732d4e426.jpg

    Русскоязычная Вики говорит, что ECMAScript это язык, не имеющий средств ввода-вывода (вот только что на нем можно написать? Данные, как говорится, не дать, не взять)

    ECMAScript это спецификация, на основе которой развивается JS и не только (все проверенные нововведения в ES переносят в JavaScript, иначе добавление новых возможностей сразу в JS, скорее всего, стало бы головной болью для программистов на нем же)

    В JavaScript есть все, что есть в ECMAScript, но в ES нет того, что есть в JS (например DOM API)

    стали убеждать, что не на js, а на ECMAScript.

    Звучит так само, как "вы едите воду, а не арбуз"

    но меня пытаются убедить, что учить нужно ECMAScript

    Если там не нужны APIs, то да, без них все что останется от JS - это ECMAScript
    Ответ написан