- 얕은 복사
=> 중첩된 객체는 복사되지 않는다.- 깊은 복사
=> 중첩된 객체까지도 복사된다.
Prototype
은 부모를 뜻한다.
[[Prototype]]
은 객체
나 null
을 가리킨다.property
가 없으면 [[Prototype]]
에서 찾는다.
- 객체에는 하나의
[[Prototype]]
만 존재할 수 있다.
=> 한 개의 객체만 상속받을 수 있다.Prototype
의property
는 사용자가 설정할 수도 있다.
=>Object.prototype
또는__proto__
을 사용한다.
__proto__
[[Prototype]]
의getter
이자setter
이다.객체
나null
만 값으로 올 수 있다.
Object.prototpye.nickname = 'tiger'
animal.__proto__.nickname = 'tiger'
/* [[Prototype]]에 nickname: 'tiger'라는 property를 추가한다. */
Prototype
은 읽기 전용이며, property
를 추가 | 수정 | 삭제할 때는 객체에 직접 해야 한다.
setter
=> property
에 함수를 이용하여 값을 할당할 때에 set
함수를 사용한다.
set 함수이름() {}
getter
=> setter
를 사용하여 할당한 값을 호출할 때에 get
함수를 사용한다.
get 함수이름() {return 값}
setter
와getter
의 역할이 다르기 때문의 함수의 이름이 같아도 된다.set
과get
함수는 열거할 수 없다.- 함수를 사용할 때에는
key
에value
를 할당하는 것처럼 사용한다.animal.eat = '사료' // set (animal 객체의 eat에 '사료'를 할당) animal.eat // get (animal 객체의 eat에 할당된 값을 호출) ['사료']
new function () {}
과 같은 생성자 함수는 객체를 반환한다.
=> 생성자 함수의 이름은 대문자로 시작하도록 한다.
=> 생성자 함수는 재사용하여 관련된 객체를 만들 때 사용한다.
화살표 함수는
onstructor
존재하지 않는다.
생성자 함수의 역할을 대신할 수 있다.
class 클래스이름 {
prop = value; // 기본 property 설정
constructor(생성자이름) {
} // 생성자 메소드
method(...) {} // 메소드
set something() {} // setter 메소드
get something() {} // getter 메소드
[Symbol.iterator]() {} // computed property를 사용해 만드는 메소드
}