Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 객체 생성자에 메서드를 추가하는 방법

JavaScript에서 객체 생성자(object constructor)에 메서드를 추가하는 방식은 일반 객체에 메서드를 추가하는 것과 다릅니다. 일반 객체는 생성 후에도 자유롭게 메서드를 추가할 수 있지만, 객체 생성자의 경우 그렇게 할 수 없습니다.

객체 생성자에 메서드를 만들려면 반드시 생성자 함수 내부에 정의해야 합니다. 이는 생성자 함수로부터 new 키워드로 인스턴스를 생성할 때, 내부에 정의된 메서드만이 각 인스턴스에 제대로 포함되기 때문입니다.

예제

다음 예제에서는 Business라는 객체 생성자 함수 내부에 name() 메서드를 직접 정의했습니다. 메서드가 생성자 내부에 있기 때문에 인스턴스를 통해 호출했을 때 올바른 값이 반환됩니다.

<html>
<body>
<script>
   function Business(name, property, age, designation) {
      this.Name = name;
      this.prop = property;
      this.age = age;
      this.designation = designation;
      this.name = function() {
         return this.Name
      };
   }
   var person1 = new Business("Trump", "$28.05billion", "73", "President");
   document.write(person1.name());
</script>
</body>
</html>

실행 결과

Trump

핵심 정리

  • 일반 객체: 생성 후에도 객체.메서드명 = function() {...} 형태로 언제든 메서드를 추가할 수 있습니다.
  • 객체 생성자: 메서드를 나중에 외부에서 추가하면 인스턴스에 반영되지 않으므로, 반드시 생성자 함수 내부에서 this.메서드명 = function() {...} 형태로 정의해야 합니다.

참고로, 위와 같이 생성자 내부에 메서드를 정의하면 인스턴스마다 메서드가 개별적으로 생성됩니다. 여러 인스턴스가 하나의 메서드를 공유하게 하려면 prototype을 활용하는 것이 더 효율적이라는 점도 알아두면 좋습니다.