constructor
하나의 객체만 만들지말고, 같은 타입을 가지고 있는 객체를
여러개 만들고 싶을때, 그 객체의 정보를 담고 있는 가이드라인 서류가 필요하다
이 가이드라인 서류를 constructor라고 한다.
constructor의 특징으로는 , 타입은 변하지 않고, 단지 새로운 객체를 만들고 싶을 때 쓴다.
constructor로 새로운 객체를 만들때는 new키워드를 이용해서 객체를 불러와야 한다.
자바랑 다르게 class안에 생성자가 없어도 된다.
근데 생성자에 또 다른 프로퍼티를 추가하는건 할 수 없다
Person.gender = "female"; => undefined로 된다.
이때는 prototype을 쓰면 된다. prototype은 한마디로 객체의 유전자같은 것인데 모든 객체는 다 그 안의 프로토타입으로 부터 프로퍼티나 메소드를 상속받는다.
만약 저기서 생성자 프로퍼티를 하나 더 추가하고 싶다면 ,
Person.prototype.gender = "female" 이런식으로 값을 주면된다.
__proto__는 조금 다른 개념인데, 이것은 부모 객체로부터 받은 유전자를 보여준다,
const human = {
kind : "human"
};
const pudding = Object.create(human);
console.log(pudding.__proto__);
human 객체를 상속받은 pudding객체를 만들었다.
이때 상속받은 정보를 확인하고 싶으면 pudding.__proto__ 를 만들어준다.
pudding은 human의 프로퍼티였던 { kind: 'human' }의 객체가 들어있다.
prototype 은 pudding이라는 자식 클라스가 부모 클라스에게 유전자를 주는 것이라면 ,
__proto__는 부모 클라스로부터 유전자를 받은 것을 말한다.
또한 prototype belongs to functions or classes 지만 __proto__는 그 객체 안에 있다 ! 유전받은거니까..그래서 모든 객체는 __proto__를 가지고 있다.
prototype은 객체에 유전자를 주고 싶을 때 쓰는 것
__proto__는 상속 받은 유전자 (모든 객체에 다 있음 )
추가로
const me = {};
const me = new Object();
둘이 같은거임 ..
'Development (국비 복습 ) > JavaScript' 카테고리의 다른 글
배열 요소 삭제방법 (0) | 2023.02.21 |
---|---|
Factory Functions (3) | 2023.02.19 |
Javascript reference (0) | 2023.02.19 |
이전사진 다음사진 변경 (0) | 2023.02.19 |
버튼 클릭시 배열 사진 변경 (0) | 2023.02.18 |
댓글