프로토타입 체인 내 프로퍼티 검색 순서 이해하기

프로토타입 체인은 객체 지향 프로그래밍에서 중요한 개념입니다. 이는 객체가 다른 객체를 상속받을 때, 상속된 객체의 프로퍼티를 검색하는 방법을 정의합니다. 자바스크립트에서 프로토타입 체인은 객체의 [[Prototype]] 링크를 따라 상위 객체로 이동하여 프로퍼티를 검색합니다.

프로토타입 체인 검색 순서

프로토타입 체인은 아래와 같은 순서로 프로퍼티를 검색합니다:

  1. 객체 자신에 해당 프로퍼티가 있는지 확인합니다.
  2. 객체의 [[Prototype]] 링크를 따라 상위 객체로 이동하여 프로퍼티를 검색합니다.
  3. 상위 객체의 [[Prototype]] 링크를 따라 계속해서 상위 객체를 탐색하여 프로퍼티를 검색합니다.
  4. [[Prototype]] 체인의 끝에 도달할 때까지 계속해서 프로퍼티를 검색합니다.

예를 들어, 아래와 같이 obj 객체를 생성하고 obj의 프로퍼티를 검색해보겠습니다.

let obj = {
  foo: 'Hello',
};

let protoObj = {
  bar: 'World',
};

obj.__proto__ = protoObj;

console.log(obj.foo); // 'Hello'
console.log(obj.bar); // 'World'

위 코드에서 obj 객체는 foo 프로퍼티를 갖고 있습니다. 따라서 obj.fooHello를 출력합니다. 하지만 obj 객체는 bar 프로퍼티를 갖고 있지 않습니다. 이 경우, obj 객체의 [[Prototype]] 링크를 따라 상위 객체인 protoObj를 탐색하여 bar 프로퍼티를 찾습니다. 따라서 obj.barWorld를 출력합니다.

결론

프로토타입 체인은 객체 지향 프로그래밍에서 상속과 관련된 중요한 개념입니다. 프로토타입 체인을 이해하면 객체의 프로퍼티 검색 순서를 이해할 수 있으며, 이를 통해 코드 작성과 디버깅에 도움을 얻을 수 있습니다.

REFERENCES

  1. MDN Web Docs - Inheritance and the prototype chain
  2. JavaScript.info - Prototypal inheritance