Задать вопрос
Ответы пользователя по тегу JavaScript
  • Как менять дату через js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Ответ написан
    Комментировать
  • Как разрешить окно iframe http на сайте с https?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    только прокси через свой сервер и отдавать по https
    Ответ написан
    Комментировать
  • Как вывести сумму значений массива?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    arr.reduce((sum, cur) => sum += cur, 0)
    Ответ написан
  • Как обычно пишут приложения на react.js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    или есть какой-нибудь другой способ

    есть, сразу верстать в jsx
    Ответ написан
    Комментировать
  • Как на JavaScript выполнить сокращение дробей?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Распарсить и посчитать))
    Как вариант: https://runkit.com/58518b99cadb8300133f8955/585193...
    Ответ написан
    Комментировать
  • Как убрать все события со всех элементов?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Костыльно, но...
    document.documentElement.innerHTML = document.documentElement.innerHTML;
    Ответ написан
    Комментировать
  • Как удалить дубликаты из json?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    arr = Array.from(new Set(arr));
    Ответ написан
    Комментировать
  • Расчёт стоимости изготавливаемого товара, как записать данные для калькуляции?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    {
    type: '1 канал',
    size: '1,5х0,5',
    prices: [
      {from: 100, to: 150, price: 795},
      {from: 151, to: 750, price: 735}
    ]
    }
    что-то вроде этого
    Ответ написан
    1 комментарий
  • Ссылка открывает заданную страницу во фрейме. Как вывести юзера из фрейма на реальный url?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Если фрейм с того же домена, то в фрейме выполняемwindow.top.location.href = 'new url';
    Если с другого, то никак - политика безопасности
    Ответ написан
    1 комментарий
  • Есть ли на собеседовании вопросы про контекст this?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Друзья, есть ли вопросы на собеседовании о том, что this зависит от контекста вызова?
    Вполне могут быть, так как это одна из базовых концепций языка
    Сохранилось ли эта особенность в классах и вообще ситуация в ES6?
    классы es2015 - всего лишь синтаксический сахар над прототипапами - более привычный синтаксис для пришедших из языков с классическим ООП, таких как java и C#
    соответственно ситуация абсолютно такая же, как и с обычными функциями, единственное дополнение нового синтаксиса - нельзя вызывать конструктор без оператора new
    Если можете посоветуйте задачки на контекст, чтобы потренировать, ну или лайфхак, который поможет изи запомнить это.
    Надеюсь сойдет за лайфхак:
    func()вызов с контекстом по-умолчанию (undefined в strict режиме или глобальный объект не в strict режиме)
    func.call(ctx, ...args)
    func.apply(ctx, args)
    obj.func.call(ctx, ...args)
    obj.func.apply(ctx, args)
    вызов с указанным контекстом ctx

    obj.func()вызов с контекстом obj
    (0, obj.func)()хак "отвязка контекста", функция вызывается с контекстом по-умолчанию
    Ответ написан
    Комментировать
  • Можно ли измерять углы на картинке посредством js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    1. Отрисовываем картинку на canvas
    2. получаем ее bitmap через getImageData
    3. переводим bitmap в GrayScale (ищите формулу RGB->GrayScale) и повышаем резкость округлением значений до 16 или даже 8 цветов
    4. ищем точки, которые резко контрастируют с окружающими и строим по ним векторы
    5. считаем углы между векторами, отрезки которых на рисунке пересекаются
    Ответ написан
  • Как переключать вкладки на сайте (табы) при помощи скрола?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Комментировать
  • Отключения скролла страницы по оси Y на iPad / iPhone / Android?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    $('your_slider_slector').on('touchmove', function(event) { event.preventDefault(); });
    Ответ написан
  • Как реализовать изменение значения при клике на ссылку?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Самое простое - стилизовать input чтоб он выглядел так как нужно, а по псевдоклассу :focus стилизовать его для ввода
    Ответ написан
    1 комментарий
  • Каким плагином пользуетесь для создания графиков на javascript?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Ответ написан
    Комментировать
  • Неправильно работает промис, чяднт?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    forEach всегда возвращает undefined, нужен map
    Чтоб дождаться выполнения всех промисов в массиве используйте Promise.all
    итого:
    function checkSpec() {
                return driver.executeScript("var search = []; if (typeof xmlDataSpeclist !== 'undefined') {" +
                                                "$.each(xmlDataSpeclist, function (key, item) {" +
                                                    "search.push(" +
                                                    "'http://domain/?spec='" + " + item.id" +
                                                    ");" +
                                                "});" +
                                            "};" +
                                            "return search;"
                ).then((search) => {
                    return Promise.all(search.map(function(val, i) {
                        console.log(search.length); //debug printing
                        return new Promise((resolve, reject) => {
                            request(search[i], function(error, response, body){
                                if (error) {
                                    reject(error);
                                }
                                resolve(body);
                            });
                        }).then((body) => {
                            console.log(body);
                            assert.include(body, 'class="someClass"');
                        });
                    }));
                });
    
            }
    
            return checkSpec();
    Ответ написан
    1 комментарий
  • Что скажете о javascript webSocket?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Во-первых, websocket - это протокол передачи данных, реализованный поверх http (wss - websocket secure работает через https соответственно) и к ECMAScript (спецификация для языков JavaScript, ActionScript и иже с ними) никакого отношения не имеет.
    Во-вторых, реализация websocket клиента включена в спецификацию BOM (Browser Object Model), из актуальных браузеров поддержка есть почти везде, не поддерживают только IE9 и ниже (критично только если ресурсом будут пользоваться в госсекторе) и OperaMini (мобильный браузер, который по реализации стандартов застрял где-то в 90х)
    В-третьих, websocket кардинально отличается от ajax:
    ajax позволяет делать классические http запросы и работает по принципу запрос-ответ
    websocket же устанавливает постоянное соединение, после чего общение происходит в виде отправки сообщений, притом сообщения могут отправлять как сервер так и клиент в любой момент времени пока установлено соединение
    В-четвертых, конкретно в реализации websocket клиента в браузере есть ряд ограничений:
    Нельзя управлять заголовками при установлении соединения, единственный способ передать какие-либо данные на сервер в момент установления соединения - это url
    На протяжении всего соединения будет только один формат обмена данными, на выбор есть строки, ArrayBuffer и Blob. Если есть необходимость отправлять по сокету как бинарные данные так и строки, то строки придется на js паковать в ArrayBuffer или Blob и, соответственно, распаковывать обратно при получении сообщений
    В-пятых, хотя правильнее наверно в-нулевых, сервер должен уметь работать по протоколу websocket

    В целом, вебсокеты можно использовать как альтернативу ajax, в SPA приложениях он может даже дать прирост скорости в общении с серверным апи в виду постоянного соеденения, но есть свои заморочки:
    придется самостоятельно реализовывать систему запрос-ответ (тут можно взять такую вещь как socket.io и не парится, хоть и тормазнутая, зато удобная + есть имитация поверх других транспортов для всяких там IE9)
    при отправки больших данных, придется заморачиваться разбивкой на части, иначе другие сообщения будут ждать пока сообщение будет отправлено (не стоит отправлять больше 256кб за раз)
    Ответ написан
    1 комментарий
  • Есть ли подобие global из php в js?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    В javascript область видимости строится на замыканиях (вложенности функций), есть три оператора объявления переменных:
    var - переменная будет видна в текущей функции и во всех функциях объявленных внутри текущей функции, включая те, что объявлены внутри вложенных функций, данное объявление всплывает на начало функции не зависимо где в функции оно произведено
    let - переменная будет видна в пределах текущего блока после ее объявления (не всплывает в отличии от var), а так же во всех вложенных в текущий блок блоках и функциях
    Так же нужно отметить, что такое объявление произведенное в циклах создаст новую переменную на каждую итерацию цикла
    const - все то же самое, что и для let + значение нельзя изменить
    Важно отметить, что для объектов значением переменной является ссылка на объект, а не сам объект, то есть записать в такую переменную что-то еще нельзя, но состояние объекта менять можно

    При обращении к переменной она сначала ищется в текущей области видимости, а если в текущей области такой переменной не объявлена, то производится поиск в области видимости выше.
    Самой верхней областью видимости является глобальный объект, в нем поиск производится последним, если переменная не найдена и там, то будет возвращено значение undefined
    Важно: в strict режиме (который рекомендуется включать всегда) нельзя использовать не объявленные переменные за исключением в операторе typeof

    Многие среды исполнения js создают в глобальном объекте переменную содержащую ссылку на сам глобальный объект, например gui поток браузера создает несколько таких ссылок:
    window - глобальный объект текущего фрейма (вкладка браузера, попап-окно, iframe)
    top - глобальный объект самого верхнего фрейма (вкладки)
    parent - глобальный объект фрейма находящегося на уровень выше, либо равносильно top если текущий фрейм - вкладка браузера или попап-окно
    opener - глобальный объект фрейма, породившего текущую вкладку или попап-окно (может быть null, если текущая вкладка порождена самим браузером)

    В webworker'ах и webextension'ах браузера ссылка на глобальный объект хранится в переменной self
    В node.js - global

    Универсальный способ получить глобальный объект в любой среде исполнения:
    function getGlobal() {
      return (new Function('return this'))();
    }


    P.S. использование глобальной области видимости - дурной тон
    Ответ написан
    1 комментарий
  • Можно ли вызвать анонимную функцию из другого файла, передав в нее параметры?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Используйте webpack и не изобретайте велосипедов
    Ответ написан
    Комментировать
  • Encryption.js:9 Uncaught TypeError: key.charCodeAt is not a function?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Проблема в том что Вы отдаете в функцию число:
    var secret_key = degree % simple_mod; // число
    
    //отдаем число функции
    get_login = rc4(secret_key, get_login);


    А charCodeAt - это метод строки
    Ответ написан
    Комментировать