Дима
Ну, прокрутить в голове что? =)
new Array(count).fill(null).map(...)
Создаём массив ничего -> массив не трогаем, просто создаём индексы-> создаём нормальный массив
Ну вот где-то здесь я завис)) Смысл теперь ясен, но я бы так всё равно не писал, сто процентов %)
Anonymous
Никаких ошибок — всё работает. =)
Anonymous
http://codepen.io/bigslycat/pen/vXNJmV?editors=0012
Cheslav
в чем разница если определить метод в функции конструкторе или после через prototype?
Mikhail
Mikhail
Там есть .times() если уж for писать слишком сложно
Anonymous
Anonymous
В prototype метод создаётся 1 раз, а в конструкторе — каждый раз при вызове конструктора.
Anonymous
Mikhail
ну там давно уже есть partial import
Mikhail
import _times from 'lodash/times'
Anonymous
Хм... Аргумент.
Anonymous
Спасибо.
Anonymous
class Times {
constructor(callback) {
this.callback = callback;
}
repeat(count) {
return new Array(count).fill(null).map(
(value, index) => this.callback(index)
);
}
}
Name
Anonymous
Anonymous
Ой, пардон. У меня тоже так было.
Name
Anonymous
Name
Я не понимаю, зачем нужен этот класс.
Name
Anonymous
Name
Это от того, что я не парю и ем мясо
Anonymous
Name
Но зачем в данном случае нужна абстракция в виде класса?
Name
можно вынести это в npm модуль с названием из одной буквы, будет ещё короче
а в качестве заполняемых значений нового массива передавать не значение или функцию, а класс, так будет ещё удобнее
Anonymous
А можно ещё выпить валерьянки.
Anonymous
То есть fillWith() — это, по-сути, велик. Только более медленный.
Anonymous
Проще тогда просто писать
function fillWith(callback, count) { ... }
Дима
Это просто пример к "вызывать repeat() как мне вздумается"
Anonymous
У тебя map, new, fill, анонимная функция с => внутри map, прототип, передача коллбэка, создание объекта и еще фигова тонна всего)
А функция должна иметь замыкание с конкретным fn в любом случае
Если написать твою fillWith() так же, но в виде класса, тио будет быстрее. Я не говорил, что конкретно моя реализация быстрее (она, в общем-то, на это и не претендует). Я говорил о том, что ты повёл себя непоследовательно — хотел оптимизировать, но допустил ошибку — твой код каждый раз будет делать работу, которую можно было сделать один раз.
Anonymous
Здесь repeat() создаётся только при объявлении класса. При создании его экземпляра, на repeat() создаётся ссылка в прототипе экземпляра.
Anonymous
В твоём примере анонимная функция создаётся столько раз, сколько ты вызываешь fillWith().
Дима
>так же, но в виде класса, тио будет быстрее
Хахах, увы, но нет)
Anonymous
Ну ладно.
Damir
Anonymous
Babel полифилит fill?
Не знаю, что делает пакет babel-polyfill. Я использую babel только для синтаксиса. А для клиентских полифилов использую https://polyfill.io
Damir
Anonymous
Anonymous
А какие функции бабел полифилит при
presets: ['es2015', 'es2016', 'react']?
Anonymous
Anonymous
Я думал, бабел только при истользовании определённого пакета полифилит. Осторожнее. Проверь своё приложение на IE8.
Anonymous
https://cdn.polyfill.io/v2/polyfill.js?features=all
Anonymous
// setImmediate
(function (global, undefined) {
"use strict";
if (global.setImmediate) {
return;
}
...
Anonymous
Всё нормально он полифилит. С проверкой.
Damir
Damir
Тема отличная, ещё бы доступ через npm и полифилы через browserlist
Anonymous
Дада. Его. Я не пользуюсь им, т.к. есть сервис. Лучше буду тянуть меньше кода.
Anonymous
Так есть же npm-пакет. Ты почитай доку-то.
Anonymous
Они на селф-хостинг это распространяют в том числе.
Damir
Да, круто. Была бы сказка, если бы ещё роутинг не нужно было ставить и все это как-то работало через один require))
Anton
Babel-polyfill громоздкий слишком
Anonymous
Anonymous
Это было бы весьма юзабельно для больших проектов, т.к. такому cdn'у явно лучше лежать на отдельной ноде.
Anonymous
Косяк может быть один: если разрешить кеширование, то файл может быть кеширован на чьём-нибудь прокси. В итоге если в первый раз файл попросил кто-нибудь с последним хромом, то прокси закеширует файл, который потом отдаст всем. В том числе и 8-му ослу.
Anonymous
Этого можно избежать, разрешив кеширование, но фронт должен присылать юзерагент браузера в виде гет-параметра. Тогда всё будет ок.
Damir
Можно как вариант, вставлять полифил в тело страницы после чтения юзерагента
Damir
Правда для ие весомо утяжелит страницу
Anonymous
Эу... =/
Damir
До 40кб в целом не критично
Anonymous
Нет. Там есть возможность задать юзерагент вручную, с помощью гет-параметра.
Anonymous
Пусть он кешируется.
Anonymous
Просто кешироваться будет индивидуально на 100%.
Anton
Ребят, чет я не пойму почему moment.js format('MMM') возвращает не September, а 099
Anton
oO
Anton
сталкивался кто?
Arseniy
September вроде возвращает format(‘MMMM’)
Arseniy
а MMM должен ‘Sep’
Anton
Так он выводит мне вовсе 099
Arseniy
а есть полный код?
Anton
moment(p.date).format("MMM")