Object-oriented Programming in JavaScript: Made Super Simple | Mosh의 강의를 정리한 내용입니다.
Object Oriented Programming 이 뭔지 알아봤으니 JavaScript로 Object를 만들어볼 차례이다.
Object literal 방식은 오브젝트를 정의하는 가장 심플한 방법이다.
const circle = {
radius : 1,
location : {
x: 1,
y : 1
},
draw : function (){ // method
console.log('draw');
}
};
객체를 만들기 위한 방법으로 크게 Factory 함수를 이용하는 방법과 Constructor 함수를 이용하는 방법이 있다. 두 방법 모두 중요하기 때문에 상황에 맞게 쓸 줄 알아야한다.
const circle = {
radius : 1,
location : {
x: 1,
y : 1
},
draw : function (){ // method
console.log('draw');
}
};
// 같은 애를 만들기 위해서 복사
const circle = {
radius : 1,
location : {
x: 1,
y : 1
},
draw : function (){ // method
console.log('draw');
}
};
위에서 만든 circle 객체를 하나 더 만들고 싶을 땐 어떻게 해야할까 ? 일단 객체를 복사했다. 하지만 이 경우 하나 이상의 메소드가 있는 경우 문제가 발생할 수 있다.
사실 객체 리터럴 방식은 적어도 하나의 메소드를 가진 객체를 만드는데 좋은 방법은 아니다.
createCircle 함수를 만들고 객체를 return 해주었다. 인자로 radius를 받을 수 있음
function createCircle(radius){
return {
radius, // es6에서 KEY와 value가 같으면 하나로 적어줘도 된다.
draw : function(){
console.log('draw')
}
};
}
// 객체 만들기
const circle = createCircle(1);
function Circle(radius){
this.radius = radius;
this.draw = function(){
console.log('draw');
}
// return this; 자동으로 this 객체가 리턴 되기 떄문에 쓰지 않아도됨
}
// 객체 만들기
const another = new Circle(1);
this
operator를 사용함this
는 이 코드를 실행시키고 있는 객체를 가리키는 역할을 함🌈 new opeator가 하는 일
- new는 먼저 빈 객체를 만든다.
- this가 해당 객체를 가리키게 한다. 디폴트로
this
는 전역 객체를 가리키고 있다.
- 브라우저에서 전역 객체는 window이기 때문에 new를 사용하지 않으면 this는 window를 가리키고 있음
- 그 후 함수(Circle)에서 해당 객체를 반환하게 한다.
감사합니다