[javascript] 객체의 상속과 메모리 사용량

자바스크립트에서 객체를 상속하는 방법은 메모리 사용량에 영향을 미칠 수 있습니다. 상속 방식에 따라 메모리 사용량이 달라질 수 있기 때문에, 개발자는 객체의 상속을 설계할 때 메모리 사용량을 고려해야 합니다.

프로토타입 기반 상속

프로토타입 기반 상속은 메모리 사용량을 최적화할 수 있는 방법 중 하나입니다. 부모 객체의 메서드와 속성을 자식 객체가 상속받아 재사용할 수 있기 때문에 중복된 메모리를 사용하지 않고도 원하는 기능을 구현할 수 있습니다.

function Parent(name) {
  this.name = name;
}

Parent.prototype.getName = function() {
  return this.name;
};

function Child(name, age) {
  Parent.call(this, name);
  this.age = age;
}

Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;

Child.prototype.getAge = function() {
  return this.age;
};

const child = new Child('Alice', 10);
console.log(child.getName()); // Output: Alice
console.log(child.getAge()); // Output: 10

위 예제에서 Object.create를 통해 자식 객체가 부모 객체의 프로토타입을 상속받을 수 있습니다. 이를 통해 메모리 사용량을 최적화할 수 있습니다.

ES6 클래스 상속

ES6에서는 클래스 기반으로 상속을 구현할 수 있습니다. 이 방법 또한 프로토타입을 기반으로 하지만, 클래스 문법을 사용하여 상속 관계를 명확하게 정의할 수 있습니다.

class Parent {
  constructor(name) {
    this.name = name;
  }

  getName() {
    return this.name;
  }
}

class Child extends Parent {
  constructor(name, age) {
    super(name);
    this.age = age;
  }

  getAge() {
    return this.age;
  }
}

const child = new Child('Bob', 8);
console.log(child.getName()); // Output: Bob
console.log(child.getAge()); // Output: 8

클래스 상속을 사용할 때에도 프로토타입을 기반으로 상속되므로 메모리 사용량 면에서 큰 차이는 없지만, 코드의 가독성과 유지보수성 측면에서 이점을 가질 수 있습니다.

결론

자바스크립트에서 객체의 상속은 메모리 사용량에 영향을 미칠 수 있으므로, 상황에 맞게 적절한 상속 방식을 선택하여 개발하는 것이 중요합니다. 프로토타입 기반 상속과 ES6 클래스 상속은 각각의 장단점을 가지고 있으며, 상황에 따라 적절히 활용해야 합니다.

자세한 내용은 MDN web docs를 참고하시기 바랍니다.