__proto__ 직접 상속

agnusdei·2023년 7월 11일
0

객체 리터럴을 사용하여 객체를 직접 상속하려면 __proto__ 속성을 활용할 수 있습니다. __proto__는 JavaScript의 내장 속성으로, 객체의 프로토타입을 나타내는 역할을 합니다.

__proto__를 사용하여 객체를 직접 상속하는 방법은 다음과 같습니다:

const parent = {
  greet() {
    console.log('Hello, World!');
  }
};

const child = {
  name: 'John',
  age: 25,
  __proto__: parent
};

child.greet(); // "Hello, World!"
console.log(child.name); // "John"
console.log(child.age); // 25

위의 예시에서 parent 객체는 greet 메서드를 가지고 있습니다. 그리고 child 객체는 nameage 속성을 가지고 있으며, __proto__를 사용하여 parent 객체를 직접 상속합니다.

결과적으로 child 객체는 nameage 속성을 직접 소유하면서도 greet 메서드를 상속받아 사용할 수 있습니다. child.greet()를 호출하면 상속된 greet 메서드가 실행되어 "Hello, World!"가 출력됩니다.

하지만 __proto__ 속성은 ECMAScript 2015(ES6)에서는 공식적으로 권장되지 않는 방법이며, 이후의 버전에서는 해당 속성을 사용하지 않는 것이 좋습니다. 대신 Object.create() 메서드나 클래스 문법을 사용하여 객체 상속을 구현하는 것이 권장됩니다. 다음은 Object.create() 메서드를 사용한 예시입니다:

const parent = {
  greet() {
    console.log('Hello, World!');
  }
};

const child = Object.create(parent);
child.name = 'John';
child.age = 25;

child.greet(); // "Hello, World!"
console.log(child.name); // "John"
console.log(child.age); // 25

Object.create() 메서드는 지정된 프로토타입을 가진 새로운 객체를 생성합니다. 위의 예시에서 child 객체는 parent 객체를 프로토타입으로 가지며, nameage 속성을 추가하여 확장합니다. 이 방식은 더 명시적이고 명확한 상속을 구현하는 데 도움이 됩니다.

0개의 댓글