[javascript] 객체의 프로토타입 체인

자바스크립트에서 객체는 다른 객체의 프로퍼티를 상속받을 수 있습니다. 이를 프로토타입 체인이라고 합니다. 모든 객체는 다른 객체로부터 상속받으며, 이는 프로토타입이라 불리는 특수 객체와 관련이 있습니다.

프로토타입

모든 객체는 자신의 프로토타입을 가지고 있습니다. 자바스크립트에서는 객체를 생성할 때 프로토타입을 지정할 수 있으며, 이는 Object.create()class를 통해 수행할 수 있습니다.

let parent = {
    name: "Parent",
    greet: function() {
        return "Hello, I am " + this.name;
    }
};

let child = Object.create(parent);
child.name = "Child";

console.log(child.greet()); // 출력: "Hello, I am Child"

위 코드에서 child 객체는 parent 객체를 프로토타입으로 상속받았습니다.

프로토타입 체인

객체에서 프로퍼티나 메서드에 접근하려고 할 때, 해당 객체에 해당 프로퍼티나 메서드가 없는 경우 프로토타입 체인이 활용됩니다. 자바스크립트는 해당 객체의 프로토타입에서 찾지 못한 프로퍼티나 메서드를 상위 프로토타입으로 이동하여 검색합니다. 이 과정은 해당 객체의 상위 프로토타입에도 해당 프로퍼티나 메서드가 없을 때까지 계속됩니다.

console.log(child.toString()); // 출력: "[object Object]"

위 코드에서 child 객체에 toString() 메서드가 없지만, 해당 메서드는 child 객체의 프로토타입 체인 상위인 Object 객체에서 찾을 수 있습니다.

프로토타입 체인은 자바스크립트의 객체 지향 프로그래밍에서 중요한 개념이며, 이를 이해하면 객체 간의 관계를 효과적으로 이해하고 활용할 수 있습니다.

자세한 정보는 MDN web docs에서 확인할 수 있습니다.