객체 지향 JavaScript — 클래스 기본 사항
지금 http://jauyeung.net/subscribe/에서 내 이메일 목록을 구독하십시오.
JavaScript는 부분적으로 객체 지향 언어입니다.
JavaScript를 배우려면 JavaScript의 객체 지향 부분을 배워야 합니다.
이 기사에서는 클래스의 기본 사항을 살펴보겠습니다.
클래스
ES6은 객체를 더 쉽게 생성하는 데 도움이 되는 많은 유용한 기능을 제공합니다.
Java와 같은 클래스 기반 언어에 익숙하다면 JavaScript 클래스도 친숙해 보일 것입니다.
그러나 JavaScript 클래스는 프로토타입 상속 모델에 비해 구문상의 설탕입니다.
ES6 이전에는 생성자만 만들 수 있었습니다.
function Person(name) {
if (!(this instanceof Person)) {
throw new Error("Person is a constructor");
}
this.name = name;
};
Person.prototype.eat = function() {
//...
};
Person
인스턴스 속성이 있는 this.name
압축 프로그램이 있습니다.그리고
Person.prototype.eat
는 인스턴스 메소드입니다.그런 다음 다음과 같이 작성하여
Person
생성자에서 상속하는 자식 생성자를 만들 수 있습니다.function Employee(name, job) {
if (!(this instanceof Employee)) {
throw new Error("Employee is a constructor");
}
Person.call(this, name);
this.job = job;
};
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;
Employee.prototype.work = function() {
// ...
};
Employee
인수로 Person
생성자를 호출하는 name
생성자를 만듭니다.그런 다음
this.job
를 job
로 설정합니다.그런 다음
Employee
를 사용하여 Object.create
의 프로토타입을 생성합니다.Person.prototype
를 인수로 사용하여 Object.create
메서드를 사용했기 때문에 Person.prototype
의 속성을 상속합니다.그런 다음 메서드를 만들고 생성자를
Employee
로 설정할 수 있으므로 instanceof
인스턴스에서 Employee
를 사용하면 true
가 반환됩니다.클래스 구문을 사용하면 삶을 훨씬 쉽게 만들 수 있습니다.
class Person {
constructor(name) {
this.name = name;
}
eat() {
//...
}
}
class Employee extends Person {
constructor(name, job) {
super(name);
this.job = job;
}
work() {
//...
}
}
Person
클래스를 생성합니다.constructor
메서드에는 생성자 함수 자체에 있던 것이 있습니다.프로토타입 메서드는 클래스에 있습니다.
자식 클래스를 생성하기 위해
extends
키워드를 사용한 다음 super
를 호출하여 Person
생성자를 호출합니다.그런 다음
work
인스턴스 메서드가 있습니다.eat
메서드는 Person
인스턴스에서도 상속됩니다.클래스 정의
class
키워드로 클래스를 정의할 수 있습니다.Java 또는 C#과 같은 클래스 기반 언어와 매우 유사합니다.
예를 들어 다음과 같이 작성할 수 있습니다.
class Car {
constructor(model, year) {
this.model = model;
this.year = year;
}
}
Car
클래스는 여전히 함수입니다.그래서 우리가 기록한다면:
console.log(typeof Car);
'function'
.클래스는 일반 함수와 다릅니다.
그들은 게양되지 않습니다.
일반 함수는 범위 내 어디에서나 선언할 수 있으며 사용할 수 있습니다.
그러나 클래스는 정의된 경우에만 액세스할 수 있습니다.
그래서 우리는 다음과 같이 쓸 수 없습니다.
const toyota = new Car();
class Car {}
참조 오류가 발생하기 때문입니다.
Uncaught ReferenceError: Cannot access 'Car' before initialization
클래스의 구성원을 구분할 때 쉼표를 사용할 수 없지만 세미콜론을 추가할 수 있습니다.
그래서 우리는 다음과 같이 쓸 수 없습니다.
class C {
member,
method() {}
}
구문 오류가 발생합니다.
그러나 우리는 다음과 같이 쓸 수 있습니다.
class C {
method2() {};
}
결론
클래스 구문을 사용하면 생성자를 더 쉽게 만들 수 있습니다.
extends
와 super
로 상속을 할 수 있습니다.
Reference
이 문제에 관하여(객체 지향 JavaScript — 클래스 기본 사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aumayeung/object-oriented-javascript-class-basics-b01텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)