В одном из учебников была задача:
Написать полифил к методу массива forEach.
Мое решение выглядит следующим образом:
Array.prototype.myForEach = function(callback, thisArg) {
if (Object.prototype.toString.call(callback) !== '[object Function]') {
throw new TypeError(callback + ' is not a function');
}
thisArg = thisArg || null;
var self = this;
var len = this.length;
for(var i = 0; i < len; i++) {
callback.call(thisArg, self[i], i, self);
}
}
Затем заглянул в MDN, объясните зачем в полифиле описанном там, следующие строки:
// 1. Положим O равным результату вызова ToObject passing the |this| value as the argument. var O = Object(this);
Затем для определения длинны используется побитовый сдвиг
// 2. Положим lenValue равным результату вызова внутреннего метода Get объекта O с аргументом "length".
// 3. Положим len равным ToUint32(lenValue).
var len = O.length >>> 0;
Ну а затем используется цикл while
с вложенным в него for in
Из всего этого следует, что написанный мной код имеет недостатки, в чем они могут проявляться?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я так понял, что они нужны для динамического обновления данных в доме, но для этого нужен массив с данными, а получать их с помощью Ajax довольно...
Есть скрипт, который вызывается при клике по блоку и любым его дочерним элементам:
Привет, мне нужна функция, в которую мы передаем цвет и получаем массив, этого же цвета, но допустим каждый элемент массива чуть чуть светлее