웹 프론트엔드 JS 튜토리얼 ECMAScript6을 시작하기 위한 클래스 객체의 예에 대한 자세한 설명

ECMAScript6을 시작하기 위한 클래스 객체의 예에 대한 자세한 설명

Apr 28, 2017 am 10:01 AM

이 글은 주로 ECMAScript6 - Class 객체에 대한 자세한 소개를 소개합니다. 편집자가 꽤 좋다고 생각해서 이제 공유하고 참고용으로 올려보겠습니다. 편집기를 따라가서 살펴보겠습니다.

객체지향 언어의 한 가지 특징은 모두 클래스 개념을 가지고 있으며 이를 통해 동일한 속성과 메서드를 가진 객체를 얼마든지 생성할 수 있다는 것입니다.

ECMAScript5에는 클래스 개념이 없으므로 클래스 기반 언어의 개체와 개체가 다릅니다.

Javascript에서 객체를 생성하는 전통적인 방법은 생성자를 통해 이루어졌습니다.

function Person(name, age){
  this.name = name;
  this.age = age;
  this.sayHello = function(){
    return "Hello "+ this.name;
  }
}

var person = new Person("dahan",18);
person.sayHello();
//Hello dahan
로그인 후 복사

위 메소드는 Javascript에서 메소드를 선언하는 형태와 동일하기 때문에 객체와 메소드의 구분이 명확하지 않습니다. 혼란스러워지기 쉽습니다.

ES6에서는 Class(클래스) 개념을 도입했습니다. ES6 구문을 통해 객체를 생성할 때 class 키워드를 사용하여 Java 구문과 마찬가지로 클래스를 정의할 수 있습니다. 물론 이 구문의 기능은 ES5를 통해서도 구현될 수 있습니다. 이는 클래스 정의를 더 명확하고 이해하기 쉽게 만듭니다.

//类的定义
class Person {
  //ES6中新型构造器
  constructor(name) {
    this.name = name;
  }
  //实例方法
  sayName() {
    console.log("我的名字叫"+ this.name);
  }
}
//类的继承
class Programmer extends Person {
  constructor(name) {
    //直接调用父类构造器进行初始化
    super(name);
  }
  program() {
    cosnole.log("这是我的地盘");
  }
}
//运行测试
var person = new Person('lingxiao');
var coder = new Programmer('coder');

person.sayName();
//我的名字叫lingxiao
coder.sayName();
//我的名字叫coder
coder.program();
//这是我的地盘
로그인 후 복사

이제 위 코드에 나타나는 구문에 주목해 보겠습니다.

constructor

constructor는 클래스의 기본 메서드입니다. Java의 기본 메서드와 마찬가지로 모든 클래스에는 constructor 메서드가 있어야 합니다.

new을 통해 객체를 인스턴스화하면 자동으로 constructor 메서드를 호출하고 반환되는 값은 constructor에서 반환하는 값입니다. constructor기본적으로 현재 클래스의 인스턴스 객체가 반환되지만(this), 물론 다른 객체를 지정할 수도 있습니다. 이렇게 하면 인스턴스화된 객체가 현재 클래스의 인스턴스가 아닙니다.

class Person {
  constructor(){
    var ob = new Object();
    return Ob;
  }
  sayHello(){
    return "Hello World"
  }
}
var person = new Person();
person.sayHello();
//Uncaught TypeError: person.sayHello is not a function
로그인 후 복사

객체를 인스턴스화할 때 ES6에서는 new 키워드를 사용하도록 규정합니다. 객체를 직접 호출하면 함수로 호출됩니다.

class Person {
  constructor(name){
    this.name = name;
  }
};
var person = Person("dahan");
//Uncaught TypeError: Class constructor Person4 cannot be invoked without 'new'
로그인 후 복사

this

첫 번째 코드에서 보면 클래스의 this가 인스턴스 자체를 가리키지만 클래스의 메서드에 있는 경우 If 이 메소드를 단독으로 호출하면 오류가 발생합니다.

class Person{
  constructor(name){
    this.name = name;
  }
  sayHello() {
    return "Hello "+this.name
  }
}
var person = new Person("dahan");
var sayHello = person.sayHello;
sayHello();
//Uncaught TypeError: Cannot read property 'name' of undefined
로그인 후 복사

이를 위해 간단히 바인딩 this

class Person{
  constructor(name){
    this.name = name;
    this.sayHello = this.sayHello.call(this);
  }
  sayHello() {
    return "Hello "+this.name
  }
}
로그인 후 복사

inherit extend

클래스에 속해 일부 속성을 확장하고 싶지만 Done 원래 클래스를 수정하고 싶지 않아 상속이 사용됩니다.

//类的继承
class Programmer extends Person {
  constructor(name,age) {
    this.age = age;//报错
    //直接调用父类构造器进行初始化
    super(name);
  }
  program() {
    cosnole.log("这是我的地盘");
  }
}
로그인 후 복사

상속을 사용할 때는 super 키워드를 사용하여 상위 클래스를 호출해야 합니다. super(name) 상위 클래스의 constructor 메서드를 호출하면 됩니다.

또한 상속을 사용할 때 super 키워드는 this의 포인터를 변경하는 데에도 도움이 되므로 super을 사용하기 전에 먼저 this 메서드를 호출해야 합니다. ES6에서는 하위 클래스의 생성자가 super 함수를 한 번 실행해야 하며, 그렇지 않으면 오류가 보고됩니다.

마지막으로

class 키워드의 등장으로 Javascript도 좀 더 객체 지향 언어처럼 보이도록 만들어졌으면 좋겠습니다. .

위 내용은 ECMAScript6을 시작하기 위한 클래스 객체의 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Python에서 클래스와 메서드를 사용하는 방법 Python에서 클래스와 메서드를 사용하는 방법 Apr 21, 2023 pm 02:28 PM

클래스와 메소드의 개념과 인스턴스 클래스(Class): 동일한 속성과 메소드를 가진 객체의 컬렉션을 설명하는 데 사용됩니다. 컬렉션의 모든 개체에 공통적인 속성과 메서드를 정의합니다. 객체는 클래스의 인스턴스입니다. 메소드: 클래스에 정의된 함수입니다. 클래스 구성 메서드 __init__(): 클래스에는 클래스가 인스턴스화될 때 자동으로 호출되는 init()라는 특수 메서드(구성 메서드)가 있습니다. 인스턴스 변수: 클래스 선언에서 속성은 변수로 표시됩니다. 이러한 변수를 인스턴스 변수라고 합니다. 인스턴스화: 클래스의 특정 개체인 클래스의 인스턴스를 만듭니다. 상속: 즉, 파생 클래스(derivedclass)가 기본 클래스(baseclass)를 상속합니다.

jQuery를 사용하여 요소의 클래스 이름 바꾸기 jQuery를 사용하여 요소의 클래스 이름 바꾸기 Feb 24, 2024 pm 11:03 PM

jQuery는 웹 개발에 널리 사용되는 클래식 JavaScript 라이브러리로, 이벤트 처리, DOM 요소 조작, 웹 페이지에서 애니메이션 수행과 같은 작업을 단순화합니다. jQuery를 사용할 때 요소의 클래스 이름을 바꿔야 하는 상황이 자주 발생합니다. 이 기사에서는 몇 가지 실용적인 방법과 구체적인 코드 예제를 소개합니다. 1. RemoveClass() 및 addClass() 메소드 사용 jQuery는 삭제를 위한 RemoveClass() 메소드를 제공합니다.

파이썬에서 클래스는 무엇을 의미합니까? 파이썬에서 클래스는 무엇을 의미합니까? May 21, 2019 pm 05:10 PM

클래스는 클래스를 정의하는 데 사용되는 키워드입니다. 클래스 뒤에 공백을 추가하고 클래스 이름을 추가합니다. 규칙: 첫 글자가 여러 개인 경우 카멜 표기법을 사용합니다. [class Dog()]와 같은 이름 지정.

PHP 클래스 사용법에 대한 자세한 설명: 코드를 더 명확하고 읽기 쉽게 만듭니다. PHP 클래스 사용법에 대한 자세한 설명: 코드를 더 명확하고 읽기 쉽게 만듭니다. Mar 10, 2024 pm 12:03 PM

PHP 코드를 작성할 때 클래스를 사용하는 것은 매우 일반적인 관행입니다. 클래스를 사용하면 관련 함수와 데이터를 단일 단위로 캡슐화하여 코드를 더 명확하고, 읽기 쉽고, 유지 관리하기 쉽게 만들 수 있습니다. 이 기사에서는 PHPClass의 사용법을 자세히 소개하고 구체적인 코드 예제를 제공하여 독자가 실제 프로젝트에 클래스를 적용하여 코드를 최적화하는 방법을 더 잘 이해할 수 있도록 돕습니다. 1. 클래스 생성 및 사용 PHP에서는 클래스 키워드를 사용하여 클래스를 정의하고 클래스의 속성과 메서드를 정의할 수 있습니다.

Vue 오류: v-bind를 사용하여 클래스와 스타일을 올바르게 바인딩할 수 없습니다. 어떻게 해결합니까? Vue 오류: v-bind를 사용하여 클래스와 스타일을 올바르게 바인딩할 수 없습니다. 어떻게 해결합니까? Aug 26, 2023 pm 10:58 PM

Vue 오류: v-bind를 사용하여 클래스와 스타일을 올바르게 바인딩할 수 없습니다. 어떻게 해결합니까? Vue 개발에서는 클래스와 스타일을 동적으로 바인딩하기 위해 v-bind 지시문을 사용하는 경우가 많지만, 클래스와 스타일을 바인딩하기 위해 v-bind를 올바르게 사용하지 못하는 등의 문제가 발생할 수도 있습니다. 이번 글에서는 이 문제의 원인을 설명하고 해결 방법을 알려드리겠습니다. 먼저 v-bind 지시어를 이해해 봅시다. v-bind는 V를 바인딩하는 데 사용됩니다.

SpringBoot가 사용자 정의 클래스 로더를 통해 클래스 파일을 암호화하고 보호하는 방법 SpringBoot가 사용자 정의 클래스 로더를 통해 클래스 파일을 암호화하고 보호하는 방법 May 11, 2023 pm 09:07 PM

배경 최근에는 jd-gui 등의 디컴파일 도구를 통해 엔지니어링 코드를 쉽게 복원하는 것을 방지하기 위해 회사 프레임워크에 대해 주요 비즈니스 코드를 암호화하고 있습니다. 관련 난독화 기법의 구성 및 사용이 상대적으로 복잡하고, springboot 프로젝트이므로 클래스 파일이 암호화된 후 사용자 정의 클래스로더가 해독되고 로드됩니다. 이 솔루션은 디컴파일의 난이도만 증가시키지만 전반적인 암호화 보호 흐름도는 표시되지 않습니다. 아래 그림에서 Maven 플러그인은 사용자 정의 Maven 플러그인을 사용하여 컴파일을 암호화하며, 암호화된 클래스 파일은 지정된 경로에 복사됩니다.

jquery에서 요소에 클래스가 있는지 확인하는 방법 jquery에서 요소에 클래스가 있는지 확인하는 방법 Mar 21, 2023 am 10:47 AM

jquery가 요소에 클래스가 있는지 확인하는 방법: 1. "hasClass('classname')" 메서드를 통해 요소에 특정 클래스가 있는지 확인합니다. 2. "is('.classname)을 통해 요소에 특정 클래스가 있는지 확인합니다. ')" 방법.

'[Vue 경고]: v-bind:class/ :class' 오류 해결 방법 '[Vue 경고]: v-bind:class/ :class' 오류 해결 방법 Aug 26, 2023 am 08:17 AM

"[Vuewarn]:v-bind:class/:class" 오류를 해결하는 방법 Vue를 사용하는 개발 과정에서 흔히 발생하는 오류 중 하나는 "[Vuewarn]:v-bind:class입니다. " /:클래스" 오류. 이 오류 메시지는 일반적으로 v-bind:class 또는 :class 속성을 사용할 때 나타납니다. 이는 Vue가 우리가 설정한 클래스 값을 올바르게 구문 분석할 수 없음을 나타냅니다. 그렇다면 만약

See all articles