Второй вопрос по абстракции

483
26 января 2017, 04:27

Доброго вечера всем. Я уже писал тут, что изучаю JS по книге "Выразительный JS" и тема опять проходит по абстракциям. Насколько правильно я понимаю значение абстракции, как некий код, который можно использовать для выполнения различных задач?

Упражнение из книги: задача по абстрагированию:

Интерфейс к последовательностям. Разработайте интерфейс, абстрагирующий проход по набору значений. Объект с таким интерфейсом представляет собой последовательность, а интерфейс должен давать возможность в коде проходить по последовательности, работать со значениями, которые её составляют, и как-то сигнализировать о том, что мы достигли конца последовательности.

Я написал как я думаю верно и принес сюда на суд, мне интересно услышать мнение, насколько я заблуждаюсь в понятии абстрагирования и вообще почему это неправильно.

//Непосредственно абстрактная функция прохода по объекту
function abstractPassage(obj,acto) {
var keys = Object.getOwnPropertyNames(obj);
if (keys.length === 0) return "Объект пустой";
for (var i=0; i<keys.length; i++){
    acto(keys[i], obj[keys[i]]);
}
return "Проход по объекту окончен";
}
//Создание объекта и набивание его свойствами, для примера выполнения,    специально создал с неуказанным enumerable, чтобы свойства были неисчисляемыми
var obj = {};
Object.defineProperties(obj,{"a":{value:10},"b":{value:20},"c":{value:30}});
console.log(obj);
//Сначала пускаем с одним аргументом
abstractPassage(obj, function(arg1){
    console.log(arg1);
});
/*!
a
b
c
*/
//Теперь со вторым аргументом, а первый пометим что не трогаем
abstractPassage(obj, function(_, arg2){
    console.log(arg2);
});
/*!
10
20
30
*/
//Ну и с обоими одновременно
abstractPassage(obj, function(arg1, arg2){
    console.log(arg1 + " : " + arg2);
});
/*!
a : 10
b : 20
c : 30
*/
READ ALSO
Как задать координаты массива в input-е Js

Как задать координаты массива в input-е Js

Написал функцию, которая рисует таблицу и передал в нее массивС помощью input можно рисовать строки и столбцы

535
Как объединить фигуры на canvas?

Как объединить фигуры на canvas?

Мне нужно прикрутить графическое редактирование к текущему проектуНе могу найти решение по обледенению фигур

445
Парсинг html в json

Парсинг html в json

Я спарсил информацию с сайта и у меня есть около 1000 div на подобии

479
Куда вставить код соц. кнопок от Яндекс?

Куда вставить код соц. кнопок от Яндекс?

Добрый день! Я далек от написания кодов, могу только вставить готовый код в нужное место, если мне скажут где это местоКак со счетчиком Яндекса...

414