prototype / Inheritance

김세주·2021년 1월 14일
0

TIL

목록 보기
3/3
post-thumbnail

prototype

javascript 언어는 원래 oop를 구현하기 위해 만들어진 언어가 아니다. 그런데 구현하기 위해 prototype 이라는 개념이 등장한다.

자바스크립트일반적인 객체지향 언어와 구분하는 가장 중요한 개념이다. 이를 통해 상속개념을 제공한다.

new 를 먼저 알아야한다

inheritance 는 상속이라 한다. 상위 객체의 특징을 하위 객체에 넘겨준다.

thisnew개념

첫번째

let person = {}
person.name = 'seju'
person.introduce = function() {
    return `my name is ` + this.name
}

이렇게 코딩하면 가독성이 떨어지고, let personperson.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
}

그러나 여기서도 문제가 발생한다. 빈 객체를 만들고 해도 똑같다는 것.

네번째, 초기화(init)

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를 써서 객체를 만들어 준다.

prototype vs proto

profile
시간은 내 편이다.

0개의 댓글