isArray, filter 활용 예제
function lessThan100(number) {
return number < 100;
}
function getElementsLessThan100AtProperty(obj, property) {
const maybeArr = obj[property];
if (Array.isArray(maybeArr)) {
return maybeArr.filter(lessThan100);
}
return [];
}
const obj = {
key: [1000, 20, 50, 500],
};
let output = getElementsLessThan100AtProperty(obj, 'key');
console.log(output); // --> [20, 50]
카운터 예시) 단순 객체를 사용한 경우 -> 재사용성이 떨어짐
let ageCounter1 = {
age: 20,
increase: function() {
this.age++;
},
decrease: function() {
this.age--;
},
getAge: function(){
return this.age;
}
}
ageCounter1.increase();
ageCounter1.getAge(); // 21
카운터 예시) 클로저 모듈 패턴
function makeAgeCounter() {
let age = 20;
return {
increase: function() {
age++;
},
decrease: function() {
age--;
},
getAge: function() {
return age;
}
}
}
let ageCounter1 = makeAgeCounter();
ageCounter1.decrease();
ageCounter1.getAge(); // 19
let ageCounter2 = makeAgeCounter();
ageCounter2.increase();
ageCounter2.increase();
ageCounter2.getAge() // 22
카운터 예시) 클래스 문법
class Counter {
constructor() {
this.value = 0; // 생성자 호출을 할 경우, this는 new 키워드로 생성한 Counter의 인스턴스입니다
}
increase() {
this.value++
}
decrease() {
this.value--
}
getValue() {
return this.value
}
}
let counter1 = new Counter() // 생성자 호출
counter1.increase()
counter1.getValue() // 1