1._each의 외부 다형성 높이기
var _length = _get('length');
function _each(list, iter) {
// 기존에 _get을 쓰지 않으면 null이 들어가서 에러가 난다.
// _length(list)가 undefined면 for문 실행하지 않는다.
for (var i = 0, len = _length(list); i < len; i++) {
iter(list[i]);
}
return list;
}
_each(null, console.log);
// 에러가 아니라 동작하지 않는다.
console.log(_map(null, function(v) {return v;}));
_go(null,
_filter(function(v) { return v % 2; }),
_map(function(v) { return v * v; }),
console.log);
// 예외적인 데이터가 들어와도 에러가 나지 않는다.
function _is_object(obj) {
return typeof obj === 'object' && !!obj;
}
function _keys(obj) {
return _is_object(obj) ? Object.keys(obj) : [];
}
console.log(_keys({name : 'ID', age : 30});
function _each(list, iter) {
var keys = _keys(list);
for (var i = 0, len = keys.length; i < len; i++) {
iter(list[keys[i]]);
}
return list;
}
_each({
13 : 'ID',
19 : 'HD',
29 : 'HD',
}, function(name) {
console.log(name);
})
// 실행가능
console.log(_map({
13 : 'ID',
19 : 'HD',
29 : 'HD',
}, function(name) {
return name.toLowerCase();
}));
_go({
13 : 'ID',
19 : 'HD',
29 : 'HD',
},
_map(function(name) {
return name.toLowerCase();
}),
console.log)