반응형
프로토타입(prototype)_2편
contructor 프로퍼티
생성자 함수의 프로퍼티인 prototype 객체 내부에는 constructor 이라는 프로퍼티가 있습니다.
인스턴스의 __proto__ 객체 내부에도 마찬가지죠.
이 프로퍼티에는 단어 그대로 원리 생성자 함수(자기 자신) 를 참조합니다.
예제를 살펴봅시다.
var arr = [1, 2];
Array.prototype.constructor === Array //true
arr.__proto__.constructor === Array //true
arr.constructor === Array //true
var arr2 = new arr.constructor(3, 4);
console.log(arr2); //[3, 4]
인스턴스의 __proto__ 가 생성자 함수의 prototype 프로퍼티를 참조하며 __proto__ 가 생략 가능하기 때문에
인스턴스에서 직접 constructor 에 접근할 수 있는 수단이 생긴 것입니다.
consturcor 를 다양하게 접근할 수 있습니다.
var Person = function (name) {
this.name = name;
};
var p1 = new Person('사람1'); // { name : "사람1" } true
var p1Proto = Object.getPrototypeOf(p1);
var p2 = new Person.prototype.constructor('사람2') // { name : "사람2" } true
var p3 = new p1Proto.constructor('사람3') // { name : "사람3" } true
var p4 = new p1.__proto__.constructor('사람4') // { name : "사람" } true
var p5 = new p1.constructor('사람5'); // { name : "사람5" } true
[p1, p2, p3, p4, p5].forEach(function (p) {
console.log(p, p instanceof Person);
});
p1부터 p5까지 모두 Person 의 인스턴스입니다.
아래는 모두 동일한 대상을 가리킵니다.
[Contructor]
[instance].__proto__.constructor
[instance].constructor
Object.getPrototypeOf([instance]).constructor
[Contructor].prototype.constructor
아래는 모두 동일한 객체(prototype) 에 접근할 수 있습니다.
[Contructor].prototype
[instance].__proto__constructor
[instance]
Object.getPrototypeOf([instance])
도움받음 https://medium.com/@bluesh55/javascript-prototype-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-f8e67c286b67
* 출처 : '코어 자바스크립트 - 핵심 개념과 동작 원리로 이해하는 자바스크립트 프로그래밍', 정재남 지음
반응형
'Front-End > JavaScript' 카테고리의 다른 글
[JavaScript] 자바스크립트에서 table 내용 엑셀 다운로드 (2) | 2020.06.18 |
---|---|
[ES6] WeakSet, WeakMap (0) | 2020.06.13 |
[JavaScript] 프로토타입(prototype)_1편 (0) | 2020.05.06 |
[JavaScript] 클로저 (Closure) (0) | 2020.04.10 |
[JavaScript] 콜백 함수 (Callback Function) (1) | 2020.04.04 |
최근댓글