namespace, class, design pattern
Namespacing
팀 프로젝트 시 많은 양의 자바스크립트 코드를 작성할 때,
타 팀원이 작성한 전역변수가 overwrite 되는 경우가 발생한다.
이를 막기 위해 namespacing 을 활용한다.
var NameSpace = {
a:["apple","banana","orange"],
b:true,
c:23,
d:function(){
console.log("dd");
}
};
console.log(NameSpace.d());
ES5 로 class 구현
function Cat(name){
this.name = name;
}
Cat.prototype.speak = function(){
console.log(this.name + ' makes some noise.');
};
function Lion(name){
//'super()' 호출
Cat.call(this. name);
}
// 'Cat' 클래스 상속
Lion.prototype = Object.create(Cat.prototype);
Lion.prototype.constructor = Lion;
// 'speack()' 메서드 오버라이드
Lion.prototype.speak = function(){
Cat.prototype.speak.call(this);
console.log(this.name + ' roars.');
};
ES6 (ES2015) 로 class 구현
class Cat{
constructor(name){ //인스턴스를 생성하고 클래스 프로퍼티를 초기화하기 위한 특수한 메소드이다.
this.name = name;
}
speak(){
console.log(this.name + ' makes some noise.');
}
}
class Lion extends Cat{
speak(){
super.speak();
console.log(this.name + ' roars.');
}
}