Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스프링부트핵심가이드
- 페이징
- 알파회계
- 코드로배우는스프링부트웹프로젝트
- 스프링 시큐리티
- GIT
- Kernighan의 C언어 프로그래밍
- iterator
- resttemplate
- 처음 만나는 AI수학 with Python
- baeldung
- 자바편
- /etc/network/interfaces
- 처음 만나는 AI 수학 with Python
- 목록처리
- 서버설정
- 자료구조와함께배우는알고리즘입문
- d
- 자료구조와 함께 배우는 알고리즘 입문
- 구멍가게코딩단
- 선형대수
- 네트워크 설정
- 코드로배우는스프링웹프로젝트
- network configuration
- 티스토리 쿠키 삭제
- 리눅스
- ㅒ
- 데비안
- 이터레이터
- 친절한SQL튜닝
Archives
- Today
- Total
bright jazz music
프로토타입 prototype (2) : prototype 프로퍼티 본문
함수 객체의 prototype 프로토타입
prototype 프로퍼티는 함수객체만이 소유하며 생성자 함수가 생성할 인스턴스의 프로토타입을 가리킨다.
// 함수 객체는 prototype 프로퍼티를 소유한다.
(function () {}).hasOwnProperty('prototype'); // true
// 일반 객체는 prototype 프로퍼티를 소유하지 않는다.
({}).hasOwnProperty('prototype'); // false
prototype 프로퍼티는 생성자 함수로 호출할 수 없는 함수들
// 화살표 함수는 non-constructor
const Person = name = > {
this.name = name;
}
// non-constructor는 prototype 프로퍼티를 소유하지 않는다.
console.log(Person.hasOwnProperty('prototype')); // false
// non-constructor는 프로토타입을 생성하지 않는다.
console.log(Person.prototype); // undefined
// ES6의 메서드 축약 표현으로 정의한 메서드는 non-constructor이다.
const obj = {
foo() {}
}
console.log(obj.foo.hasOwnProperty('prototype')); // false
// non-constructor는 프로토타입을 생성하지 않는다.
console.log(obj.foo.prototype);// undefined
Object.prototype으로부터 상속 받아 모든 객체가 가지고 있는 __proto__ 접근자 프로퍼티와 함수 객체만이 가지고 있는 prototype 프로퍼티는 결굴 동일한 프로토 타입을 가리킨다. 하지만 이들 프로퍼티를 사용하는 주체가 다르다.
- __proto__ 접근자 프로퍼티는 모든 객체가 소유하며, 모든 객체가 자신의 프로토타입에 접근하거나 프로토타입을 교체하기 위해 사용할 수 있다.
- prototype 프로퍼티는 생성자 함수(constructor)가 소유하며 생성자 함수가 자신이 생성할 객체(인스턴스)의 프로토타입을 할당하기 위해 사용한다.
// 생성자 함수
function Person(name) {
this.name = name;
}
const me = new Person('Lee');
// 결국 Person.prototype과 me.__proto__는 동일한 프로토타입을 가리킨다.
console.log(Person.prototype = me.__proto__); // true
모든 프로토타입은 constructor 프로퍼티를 갖는다. 이 constructor 프로퍼티는 prototype 프로퍼티로 자신을 참조하고 있는 생성자 함수를 가리킨다. 이러한 연결은 생성자 함수가 생성될 때, 즉 함수 객체가 생성될 때 이루어진다.
// 생성자 함수
function Person(name) {
this.name = name;
}
const me = new Person('Lee');
// me 객체의 생성자 함수는 Person이다
console.log(me.constructor === Person); // true'Language > Javascript' 카테고리의 다른 글
| 프로토타입 prototype (4) : 프로토타입의 생성 시점 (0) | 2025.05.12 |
|---|---|
| 프로토타입 prototype (3) : 리터럴 표기법에 의해 생성된 객체의 생성자 함수와 프로토타입 (0) | 2025.05.11 |
| 프로토타입 prototype (1) : __proto__ 접근자 프로퍼티 (1) | 2025.05.06 |
| 자바스크립트의 실행 컨텍스트 2 (실행 컨텍스트 객체에 담기는 정보) (1) | 2025.03.12 |
| 자바스크립트에서의 타입 확인 (0) | 2024.12.03 |
Comments