p 272

수빈·2022년 12월 10일
0
// new 생성자 함수로 만든 객체의 생성자 함수는 누구에용?
function aa() {};
const aaa = new aa();
console.log(aaa.constructor); // aa ()

// 객체 리터럴로 만든 객체의 생성자 함수는 누구에용?
let a = {};
console.log(a.constructor); // Object ()

new 연산자 + aa 생성자 함수 → 인스턴스 → prototype.constructor → aa 생성자 함수
aa 생성자 함수는 new 연산자를 이용해 인스턴스를 생성했다

리터럴 표현식 a → 객체 → prototype.constructor → Object 생성자 함수
Object 생성자 함수는 리터럴 표현식으로 만든 객체를 생성했는가?

Object ( ) 생성자 함수가 호출될때 하는 거
1. 인수 전달 X → 추상연산으로 빈 객체 생성
2. 인수 전달 O → 인수로 객체 생성
3. new.target 값 확인

객체 리터럴이 평가될때 하는 거
1. 추성연산으로 빈 객체 생성 후 프로퍼티 추가

추상연산으로 빈 객체 생성하는 것 빼곤 다르기 때문에
Object 생성자 함수는 리터럴 표현식으로 만든 객체를 생성하지 않았다

리터럴 표현식으로 생성한 객체가 가상적인 Object 생성자 함수를 가지는 이유

리터럴 표현식으로 생성한 객체는 상속을 위한 프로토타입이 필요
프로토타입은 생성자 함수와 같이 생성
프로토타입은 prototype.constructor 프로퍼티에 의해 생성자 함수와 연결

결론 : 프로토타입 + 생성자 함수 언제나 쌍으로 존제

그런데

리터럴 표기법 객체와 생성자 함수에 의해 생성된 객체는 큰 차이가 없다

그러므로

prototype.constructor에 연결되어 있는 생성자 함수 ( Object )
= 리터럴 표기법으로 생성한 객체를 생성한 생성자 함수 로 생각해도 됨

0개의 댓글