javascript 언어는 원래 oop를 구현하기 위해 만들어진 언어가 아니다. 그런데 구현하기 위해 prototype
이라는 개념이 등장한다.
자바스크립트
를 일반적인 객체지향 언어
와 구분하는 가장 중요한 개념이다. 이를 통해 상속
개념을 제공한다.
inheritance 는 상속이라 한다. 상위 객체의 특징을 하위 객체에 넘겨준다.
this
와new
개념
let person = {}
person.name = 'seju'
person.introduce = function() {
return `my name is ` + this.name
}
이렇게 코딩하면 가독성이 떨어지고, let person
과 person.name
사이에 실수로 써넣을수도있으므로
let person = {
'name' : 'seju',
'introduce' : function() {
return `my name is ` + this.name
}
}
이렇게 바꿔준다. 객체 안에서 해결할 수 있도록.
그러나 안의 person.introduce
가 중복이된다!!(여러명 할때)
이래서 생성자를 new
=constructor
사용해야 한다.
생성자
객체를 만드는 역할을 하는 함수
객체의 창조자.
함수에
new
를 붙이면 복제본이라 할 수 있다.
그return
값이new
연산자로 객체 인스턴스를 생성한다. instance를 생성 - > instantiation
function person() {}
let p = new person();
p.name = 'seju'
p.introduce = function () {
return 'my name is" + this.name
}
그러나 여기서도 문제가 발생한다. 빈 객체를 만들고 해도 똑같다는 것.
function person(name) {
this.name = name;
this.introduce = function() {
return 'my name' + this.name;
}
}
let p1 = new person('seju')
let p2 = new person('arin')
이런식으로 새로운 사람을 계속 대입할 수가 있다.
생성자 new
를 써서 객체를 만들어 준다.