Oops, All Code!/📝 Study Notes
[JS] __proto__ 접근자 프로퍼티와 prototype 프로퍼티
밍동망동
2023. 3. 18. 00:00
1. __proto__ 프로퍼티
모든 객체는 [[Prototype]] 이라는 내부 슬롯을 갖는다.
문제는, 내부 슬롯이 가리키는 객체에 접근할 수 없다는 사실이다.
따라서 간접적인 접근 방법을 제공하고 있는데 그게 바로 __proto__ 접근자 프로퍼티다.
이를 통해 간접적으로 프로토타입 객체에 접근 가능하다.
const test= { t: 4 };
console.log(test.__proto__ === Object.prototype); // true
console.log(test.hasOwnProperty('a')); // true
2. prototype 프로퍼티
prototype 프로퍼티는 constructor만이 소유하는 프로퍼티다.
따라서 해당 프로퍼티는 생성자 함수로 호출 가능한 함수 객체만 소유가능하다.
hasOwnProperty 메서드를 통해 확인해볼 수 있다.
hasOwnProperty
인수로 전달받은 프로퍼티 키가 객체 고유의 프로퍼티 키인 경우에만 true를 반환한다.
상속받은 프로토타입의 키인 경우는 false를 반환한다.
(function () {}).hasOwnProperty('prototype'); // true
prototype 프로퍼티는 생성자 함수가 생성할 인스턴스의 프로토타입 객체를 가리킨다.