Class
Class는 객체를 생성하기 위한 템플릿입니다. 클래스는 데이터와 이를 조작하는 코드를 하나로 추상화합니다. 자바스크립트에서 클래스는 프로토타입을 이용해서 만들어졌지만 ES5의 클래스 의미와는 다른 문법과 의미를 가집니다.
Class를 사용하는 가장 큰 이유는 재사용성이고 작은 사이트의 경우 잘 만든 함수 하나로도 충분히 개발이 용이했다고 하면 더 복잡한 사이트를 만들게 될 경우에는 Class의 장점을 알 수 있습니다.
class student {
constructor(name, bootcamp) {
this.name = name;
this.bootcamp = bootcamp;
}
// 프로토타입 메소드
myspec() {
console.log(`안녕 내이름은 ${this.name} 이고 ${this.bootcamp} 다니고 있어!`);
}
// 정적 메서드
static hi(){
console.log("만나서 반가워");
}
}
const yeahhun = new student("예훈","코드스테이츠");
yeahhun.myspec();
student.hi();
Instance
인스턴스란? 메모리에 저장되는 객체의 실체에 초점을 맞춘 용어입니다.
비슷한 성질을 가진 여러개의 객체를 만들기 위해 일종의 설계도라고 할 수 있는데 생성자 함수(constructor)을 만들어 사용하는데 이렇게 생성된 객체를 인스턴스라고 부를 수 있다.
위에 있는 코드도 생성자 함수 라고 볼 수 있는데 생성자 함수 안에 여러 객체 인스턴스를 볼 수 있다.
class student {
constructor(name, bootcamp) {
this.name = name;
this.bootcamp = bootcamp;
}
}
const yeahhun = new student("예훈","코드스테이츠");
생성자 함수 안에서는
new 연산자는
새로운 인스턴스를 만들때 쓰는 연산자로
변수 변수명 = new class스명(매개변수); 로 사용합니다.
function car(name, fuel, brand) {
this.name = name;
this.fuel = fuel;
this.brand = brand;
}
car.prototype.getbrand = function(){
console.log(`차 브랜드는 ${this.brand}입니다.`);
}
const sedan = new car("카브리올레", 'gasolin, "벤츠");
sedan.getname(); // 차 브랜드는 벤츠 입니다..
ES5에서는 function을 사용하여 prototype을 추가하는 방식으로 ES6랑 약간의 차이가 있는 것을 확인 할 수 있습니다. ES6에서는 function을 쓰지 않아도 매서드를 추가할 수 있으며 더 간단한 모습을 확인 할 수 있다.
class car {
constructor (name, fuel, brand){
this.name = name;
this.fuel = fuel;
this.brand = brand;
}
getbrand(){
console.log(`차 브랜드는 ${this.brand}입니다.`);
}
}
const sedan = new car("카브리올레", 'gasolin, "벤츠");
sedan.getname(); // 차 브랜드는 벤츠 입니다..