프로토타입 상속 - Javascript 주간

이번 글에서는 자바스크립트에서 프로토타입 상속이 무엇인지 알아보겠습니다. 프로토타입 상속 - Javascript 주간

Curring in Javascript - Javascript weekly

Closures in Javascript - Javascript Weekly

Understanding Generators in Javascript

객체지향 프로그래밍에는 자식 객체가 부모 객체의 모든 속성을 물려받는 상속이라는 개념이 있습니다.

Javascript와 같은 Functional Programming에서는 Prototypal inheritance과 프로토타입 체인과 같은 개념을 사용합니다.

프로토타입 상속이란?



첫째, 객체 지향 상속과 Javascript 프로토타입 상속 사이에는 주요 차이점이 있습니다.

OOPS의 Object와 달리 Javascript Object에는 상속할 유형이나 클래스가 없습니다. 하지만 자바스크립트에는 프로토타입이라는 개념이 있습니다. 그것이 주요 차이점입니다

실제 사례를 통해 프로토타입 상속이 구현되는 것을 볼 수 있습니다.

실제 사례



대본



역할에 따라 사용자에게 권한이 부여되는 애플리케이션을 구축한다고 가정해 보겠습니다.

예를 들어 관리자는 프로젝트를 만들 수만 있습니다. 프로젝트 관리자는 프로젝트에 액세스할 수 있습니다. 그러나 모든 사용자는 공통점이 거의 없습니다. 예를 들어, 로그인 등

이 시나리오에서는 프로토타입 상속과 프로토타입 체인을 사용할 수 있습니다.



첫째, 일반 함수와 같습니다. 우리는 생성자인 User라는 함수를 생성합니다(참고: Javascript에서 생성자는 일반 함수에 불과합니다).


function User(name,age) {
   this.name = name;
   this.age = age;
}

그런 다음 생성자 함수에 login이라는 메서드를 만듭니다. Prototype을 이용하여 만드는 방법입니다.

User.prototype.login = function() {
  console.log('logging in');
}

그런 다음 관리자 및 프로젝트 관리자라는 이름으로 사용자 인스턴스를 만듭니다.

let admin = new User('admin',40);

let projectManager = new User('pm',35);

새 키워드로 User 인스턴스를 만들고 있습니다.

관리자 및 프로젝트 관리자에서 로그인 기능을 호출하면 다음과 같은 내용이 표시됩니다.



그 이유는 관리자와 프로젝트 관리자가 사용자로부터 상속받은 프로토타입을 가지고 있기 때문입니다.

이를 증명하려면 관리자와 프로젝트 관리자가 로그인 속성을 가지고 있는지 확인하십시오.

console.log(admin.hasOwnProperty('login'));

false를 반환합니다. 그 이유는 로그인이 부모로부터 상속되기 때문입니다.

완전한 코드:

function User(name,age) {
   this.name = name;
   this.age = age;
}

User.prototype.login = function() {

  console.log('logging in');
}


let admin = new User('admin',40);

admin.createProject = function() {
  console.log('project is created');
}

console.log(admin.hasOwnProperty('login'));
admin.login();

admin.createProject();

let projectManager = new User('pm',35);

projectManager.login();




결론



즉, 프로토타입 상속과 프로토타입 체인은 자바스크립트의 강력한 기능 중 하나입니다.



이 기사는 여기까지입니다. 앞으로 나올 기사에서 Javascript의 더 많은 핵심 개념을 살펴보겠습니다.



그때까지 해피코딩 하세요 :-)

좋은 웹페이지 즐겨찾기