JavaScript에서 객체 지향 프로그래밍을 수행했다면 다음과 같이 클래스를 만들 수 있음을 알게 될 것입니다.
Person = function(id, name, age){
this.id = id;
this.name = name;
this.age = age;
alert('A new person has been accepted');
}
지금까지 우리 클래스 사람은 두 가지 속성 만 가지고 있으며 몇 가지 메서드를 제공 할 것입니다. 이를 수행하는 깨끗한 방법은 '프로토 타입'객체를 사용하는 것입니다. JavaScript 1.1부터 프로토 타입 객체가 JavaScript로 도입되었습니다. 이것은 개체의 모든 인스턴스에 사용자 지정 속성 및 메서드를 추가하는 프로세스를 단순화하는 기본 제공 개체입니다. 다음과 같이 'prototype'객체를 사용하여 클래스에 두 가지 메서드를 추가해 보겠습니다.
Person.prototype = {
wake_up: function() {
alert('I am awake');
},
get_age: function() {
return this.age;
}
}
이제 Person 클래스를 정의했습니다. Person에서 일부 속성을 상속하는 Manager라는 다른 클래스를 정의하려면 어떻게해야합니까? Manager 클래스를 정의 할 때이 모든 속성을 다시 정의 할 필요가 없습니다. Person 클래스에서 상속하도록 설정할 수 있습니다. JavaScript에는 상속이 내장되어 있지 않지만 다음과 같이 상속을 구현하는 기술을 사용할 수 있습니다.
Inheritance_Manager = {};
// 상속 관리자 클래스를 만듭니다 (이름은 임의적 임).
이제 상속 클래스에 baseClass 및 subClassas 인수를받는 extend라는 메서드를 제공하겠습니다. extend 메소드 내에서 inheritance function inheritance () {}라는 내부 클래스를 생성합니다. 이 내부 클래스를 사용하는 이유는 baseClass와 subClass 프로토 타입 간의 혼동을 피하기 위해서입니다. 다음으로 상속 클래스의 프로토 타입이 다음 코드와 같이 baseClass 프로토 타입을 가리 키도록합니다. inheritance.prototype = baseClass. 원기; 그런 다음 상속 프로토 타입을 다음과 같이 하위 클래스 프로토 타입에 복사합니다. subClass.prototype = new inheritance (); 다음은 다음과 같이 하위 클래스의 생성자를 지정하는 것입니다. subClass.prototype.constructor = subClass; 서브 클래스 프로토 타이핑이 끝나면 다음 두 줄의 코드를 지정하여 일부 기본 클래스 포인터를 설정할 수 있습니다.
subClass.baseConstructor = baseClass;
subClass.superClass = baseClass.prototype;
다음은 extend 함수의 전체 코드입니다.
Inheritance_Manager.extend = function(subClass, baseClass) {
function inheritance() { }
inheritance.prototype = baseClass.prototype;
subClass.prototype = new inheritance();
subClass.prototype.constructor = subClass;
subClass.baseConstructor = baseClass;
subClass.superClass = baseClass.prototype;
}
이제 상속을 구현 했으므로이를 사용하여 클래스를 확장 할 수 있습니다. 이 경우 Person 클래스를 다음과 같이 Manager 클래스로 확장 할 것입니다.
Manager 클래스를 정의합니다.
Manager = function(id, name, age, salary) {
Person.baseConstructor.call(this, id, name, age);
this.salary = salary;
alert('A manager has been registered.');
}
우리는 그것을 Person 형태로 상속합니다.
Inheritance_Manager.extend(Manager, Person);
눈치 채 셨다면, Inheritance_Manager 클래스의 extend 메소드를 호출하고 우리의 경우에는 subClass Manager를 전달한 다음 baseClass Person을 전달했습니다. 여기서 순서는 매우 중요합니다. 스왑하면 상속이 의도 한대로 작동하지 않습니다. 또한 실제로 하위 클래스를 정의하기 전에이 상속을 지정해야합니다. 이제 하위 클래스를 정의하겠습니다.
아래와 같이 더 많은 메소드를 추가 할 수 있습니다. Manager 클래스는 상속되기 때문에 항상 Person 클래스에 정의 된 메서드와 속성을 갖습니다.
Manager.prototype.lead = function(){
alert('I am a good leader');
}
이제 테스트를 위해 Person 클래스와 상속 된 클래스 Manager에서 하나씩 두 개의 객체를 생성 해 보겠습니다.
var p = new Person(1, 'Joe Tester', 26);
var pm = new Manager(1, 'Joe Tester', 26, '20.000');
http://www.cyberminds.co.uk/blog/articles/how-to-implement-javascript-inheritance.aspx 에서 전체 코드와 더 많은 의견을 얻으십시오
.