오늘의 키워드
- 객체 생성 방식
- 종류 : 객체 리터럴/Object 생성자 함수/생성자 함수/Object.create 메서드/클래스(ES6)
ㄴ 추상연산 OrdinaryObjectCreate에 의해 생성됨
- 종류 : 객체 리터럴/Object 생성자 함수/생성자 함수/Object.create 메서드/클래스(ES6)
- 프로토타입 체인과 스코프 체인
- 프로퍼티 섀도잉
객체 생성 방식
1. 객체 리터럴 : 객체 리터럴에 의해 생성되는 객체의 프로토타입은 Object.prototype
const obj = { x : 1 };
console.log(obj.constructor === Object); // true
console.log(obj.hasOwnProperty('x')); // true
- Object 생성자 함수 : 객체 리터럴과 동일하게 프로토타입은 Object.prototype
const obj = new Object();
obj.x = 1;
console.log(obj.constructor === Object); // true
console.log(obj.hasOwnProperty('x')); // true
3. 생성자 함수 : 생성자 함수에 의해 생성되는 객체의 프로토타입은 생성자 함수의 prototype 프로퍼티에 바인딩되어 있는 객체
function Person(name) { this.name = name; }
const me = new Person('Park');
// Person.prototype의 프로퍼티는 constructor 뿐임.
* 프로토타입에 할당문을 써서 프로토타입 교체 시에는 constructor가 없을 수 있다. 다시 대입해주는 구문이 필요.
프로토타입 체인과 스코프 체인
프로토타입 체인 : 객체의 프로퍼티에 접근하려고 할 때, 해당 객체에 그 프로퍼티가 없으면 [[Prototype]]
내부 슬롯의 참조를 따라 자신의 부모 역할을 하는 프로토타입의 프로퍼티를 순차적으로 검색하는 것을 프로토타입 체인이라고 함.
me.hasOwnProperty('name');
위 코드에서 me
는 스코프 체인을 따라 검색한 객체, 'name'
은 프로토타입 체인을 따라 검색한 프로퍼티.
프로퍼티 섀도잉
부모 프로토타입에 프로퍼티가 있는데, 호출한 객체에 동일한 프로퍼티가 오버라이딩 되면 호출한 객체의 프로퍼티를 이용한다.
이처럼 상속 관계에 의해 부모 프로토타입의 프로퍼티가 가려지는 현상을 프로퍼티섀도잉이라고 한다.
'study.log' 카테고리의 다른 글
2023.10.30 JS 학습 키워드 (0) | 2023.10.30 |
---|---|
2023.10.25 JS 학습 키워드 및 복습 (0) | 2023.10.25 |
2023.10.24 JS 학습 키워드 (0) | 2023.10.24 |