생성자 함수를 활용한 자바스크립트 멤버 변수 접근 제어 방법

자바스크립트에서 객체를 만들 때, 생성자 함수는 주로 사용됩니다. 생성자 함수는 객체를 초기화하고 생성할 때 사용되며, 해당 객체의 멤버 변수를 정의하고 접근 제어를 할 수 있습니다. 이번 글에서는 생성자 함수를 활용한 자바스크립트 객체의 멤버 변수 접근 제어 방법을 알아보겠습니다.

멤버 변수의 접근 제어 방법

Public 멤버 변수

Public 멤버 변수는 생성자 함수 외부에서도 접근이 가능한 변수입니다. 생성자 함수 내에서 this 키워드와 함께 변수를 정의하면 Public 멤버 변수로 사용될 수 있습니다.

function Person(name, age) {
   this.name = name; // Public 멤버 변수
   this.age = age; // Public 멤버 변수
}

const person1 = new Person('John', 25);
console.log(person1.name); // 'John'
console.log(person1.age); // 25

Private 멤버 변수

Private 멤버 변수는 생성자 함수 외부에서는 직접 접근할 수 없으며, 해당 객체 내부에서만 접근할 수 있는 변수입니다. 일반적으로 Private 멤버 변수는 생성자 함수 내부에서 var 키워드를 사용하여 정의합니다.

function Person(name, age) {
   var secret = '1234'; // Private 멤버 변수
   this.name = name; // Public 멤버 변수
   this.age = age; // Public 멤버 변수

   this.getSecret = function() {
      return secret;
   };
}

const person1 = new Person('John', 25);
console.log(person1.name); // 'John'
console.log(person1.age); // 25
console.log(person1.secret); // undefined, 접근 불가
console.log(person1.getSecret()); // '1234'

위의 예시에서 secret 변수는 생성자 함수 외부에서는 접근할 수 없습니다. 하지만 getSecret() 메소드를 통해 Private 멤버 변수에 접근할 수 있는 것을 확인할 수 있습니다.

Protected 멤버 변수

Protected 멤버 변수는 생성자 함수 외부에서도 접근 가능하지만, 보통 해당 객체를 상속받은 자식 객체에서만 접근할 수 있도록 제한하는 변수입니다. Protected 멤버 변수는 생성자 함수 내부에서 this 키워드 앞에 _ 접두사를 사용하여 정의합니다.

function Person(name, age) {
   this._name = name; // Protected 멤버 변수
   this._age = age; // Protected 멤버 변수
}

function Student(name, age, grade) {
  Person.call(this, name, age); // Person 생성자 호출
  this._grade = grade; // Protected 멤버 변수
}

const student1 = new Student('Alice', 18, 'A');
console.log(student1._name); // 'Alice'
console.log(student1._age); // 18
console.log(student1._grade); // 'A'

위의 예시에서 Person 생성자를 상속받은 Student 객체에서도 _name_age 멤버 변수에 접근할 수 있습니다. 그러나 상속받은 객체 외부에서는 _name_age 멤버 변수에 직접 접근하지 않는 것이 일반적입니다.

결론

생성자 함수를 활용하여 자바스크립트 객체를 만들 때, 멤버 변수의 접근 제어를 위해 Public, Private, 그리고 Protected 멤버 변수를 활용할 수 있습니다. 이를 통해 객체의 데이터를 보호하고, 캡슐화된 프로그래밍을 할 수 있습니다.