반응형

프로토타입(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

 

[Javascript ] 프로토타입 이해하기

자바스크립트는 프로토타입 기반 언어라고 불립니다. 자바스크립트 개발을 하면 빠질 수 없는 것이 프로토타입인데요. 프로토타입이 거의 자바스크립트 그 자체이기때문에 이해하는 것이 어렵

medium.com

* 출처 :  '코어 자바스크립트 - 핵심 개념과 동작 원리로 이해하는 자바스크립트 프로그래밍', 정재남 지음

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기