티스토리 뷰
클래스와 인스턴스란?
- 클래스는 연관된 데이터의 집합을 의미한다. 일종의 설계도라고도 설명할 수 있다.
- 클래스는 실질적인 값을 갖지 않고, 어떤 속성이 있고, 함수가 어떻게 작동하는지만 구현된다.
- 이 설계도로 생성한 결과물이 인스턴스이다. 인스턴스는 실제 값을 가지고 있고, 이를 클래스에 넣어서 속성값을 정하고 매개변수로 함수를 실행할 수 있다.
- 같은 클래스를 통해 다른 인스턴스들을 생성할 때, 각각의 인스턴스에 독립된 객체가 클래스를 토대로 만들어진다. 즉, 한 인스턴스에서의 변동이 다른 인스턴스에 영향을 미치지 않는다.
클래스와 인스턴스 정의
- 인스턴스의 경우. 사용할 클래스 앞에 new키워드를 붙이고, 클래스에 값을 인자로 주고 변수에 할당한다.
let cat=new Animal(4,"야옹"); //Animal이라는 클래스로 cat이라는 인스턴스 생성. 고양이의 발 갯수와 울음소리를 전달.
- 클래스에는 클래스가 생성시 작동하는 생성자 함수라는 것이 존재한다. 보통 this를 사용하여 인스턴스의 속성을 정의할 때 사용한다.
- 클래스를 정의할때, ES5와6에서 다소 차이가 존재한다. ES5에서는 prototype을 통해 클래스를 만들었지만, ES6에서는 class문법 통해 만든다. 생성자도 ES6에서 constructor를 통해 따로 구분되게 만들 수 있게 되었다.
ES5
function Animal(leg,crying) {
this.leg = leg;
this.crying=crying;
}
Animal.prototype.howMuchleg= fuction(){
console.log(leg);
Animal.prototype.whatSoundCrying = function () {
console.log(crying);
};
let cat = new Animal(4,"야옹");
cat.howMuchleg(); // 4
cat.whatSoundCrying();//야옹
ES6
class Animal() {
constructor(leg,crying){
this.leg = leg;
this.crying=crying;
}
howMuchleg){
console.log(leg);
}
whatSoundCrying{
console.log(crying);
}
}
let cat = new Animal(4,"야옹");
cat.howMuchleg(); // 4
cat.whatSoundCrying();//야옹
댓글