Bhudh: В примере я показывал не как его вызвать, а где оно находиться. И находится оно в прототипе. Если вы запросите свойство объекта, то js сначала поищет его непосредственно у объекта, потом в прототипе объекта, потом в прототипе прототипа, пока не дойдет до null. А так то и toString() совсем не глубоко.
У вас в вопросе есть термин "генераторы". Так вот есть функции генераторы, которые ничего общего с асинхронностью не имеют. Это средство перебора, итератор. Вы скорее всего имели в виду "асинхронный генератор", что по сути является смесью генератор + промис. Очень часто в контексте статьи про асинхронные запросы такой подход просто сокращают до "генератор", что вводит в заблуждение. Сергей Новиков, например не понял вашего "генератора".
Вы правы. Для библиотеки важно быть быстрой, маленькой и без зависимостей. Сейчас много библиотек предлагают несколько версий (с разными фичами), а порой даже конструктор версии, где галочками можно отметить фичи и скачать custom файл.
В вашем случае такой подход не пригодиться? Быстрая минимальная версия для тех кто использует полифилы или только новые браузеры и чуть более весомая версия с полифилами для поддержки нужных браузеров.
Казалось бы да, но после просмотра следующего видео я немного пересмотрел свой взгляд на "быстрые" конструкции. https://youtu.be/BstzvS2xd5U?list=PLH-XmS0lSi_yLq2...
"кешировать длину массива не обязательно, чаще всего оптимизатор это сделает за вас"
Последний catch ловит все ошибки. Если ошибка случилась в method1или в method2, то в onError1 появится ошибка, тут можно принять решение, продолжить дальше вернув resolve (перейдем к method3) или прекратить работу вернув reject (перейдем в onError2).
Важная особенность. В момент первого обращения к элементу, все атрибуты data-* будут считаны в память jQuery и доступны через метод jQuery.fn.data, но если добавить еще один атрибут (data-second-attr) то он не будет доступен через данный метод.
Например элемент:
Все доступно сразу
$('div').attr('attr'); // 'first'
$('div').attr('data-name1'); // 'second'
$('div').data('name1'); // 'second'
Если добавить атрибут методом jQuery.fn.attr (изменение DOM)
$('div').attr('data-name2', 'third');
то
$('div').attr('data-name2'); // 'third'
$('div').data('name2'); // undefined
Если 'добавить' атрибут методом jQuery.fn.data (нет изменений DOM)
$('div').data('name3', 'four');
то
$('div').attr('data-name3'); // undefined
$('div').data('name3'); // 'four'
Спасибо.
Решение - экранировать всю строку при помощи mysqli_real_escape_string. Ранее почему то решил, что структура json изменяется, хотя в БД после вставки абсолютно валидный json.