본문 바로가기
Programing/Javascript

JavaScript Static Methods

by 멍멍돌이야 2022. 6. 26.
반응형

JavaScript 정적 메서드 소개

정의상 정적 메서드는 해당 클래스의 인스턴스가 아닌 클래스에 바인딩됩니다.따라서 정적 방식은 도우미 또는 유틸리티 방식을 정의하는 데 유용합니다.

ES6 이전에 정적 메서드를 정의하려면 클래스 생성자에 직접 추가합니다.예를 들어, 다음과 같은 데이터가 있다고 가정합니다.Person다음과 같이 입력합니다.

function Person(name) { this.name = name; } Person.prototype.getName = function () { return this.name; };
Code language: JavaScript (javascript)

다음은 다음과 같은 정적 메서드를 추가합니다.createAnonymous()에게Person입력:

Person.createAnonymous = function (gender) { let name = gender == "male" ? "John Doe" : "Jane Doe"; return new Person(name); };
Code language: JavaScript (javascript)

그createAnonymous()method는 static 메서드로 간주됩니다.이는 method가 어떤 인스턴스에도 의존하지 않기 때문입니다.Person속성 값을 입력합니다.

를 호출하려면createAnonymous()method, 를 사용합니다.Person인스턴스 대신 다음과 같이 입력합니다.

var anonymous = Person.createAnonymous();
Code language: JavaScript (javascript)

ES6의 JavaScript 정적 메서드

ES6에서는 다음 명령어를 사용하여 스태틱메서드를 정의합니다.static키워드를 지정합니다.다음 예제에서는 라고 하는 스태틱 방식을 정의하고 있습니다.createAnonymous()를 위해Person클래스:

class Person { constructor(name) { this.name = name; } getName() { return this.name; } static createAnonymous(gender) { let name = gender == "male" ? "John Doe" : "Jane Doe"; return new Person(name); } }
Code language: JavaScript (javascript)

스태틱 메서드를 호출하려면 다음 구문을 사용합니다.

let anonymous = Person.createAnonymous("male");
Code language: JavaScript (javascript)

클래스의 인스턴스에서 static 메서드를 호출하려고 하면 오류가 발생합니다.예를 들어 다음과 같습니다.

let person = new Person('James Doe'); let anonymous = person.createAnonymous("male");
Code language: JavaScript (javascript)

오류:

TypeError: person.createAnonymous is not a function
Code language: JavaScript (javascript)

클래스 생성자 또는 인스턴스 메서드에서 정적 메서드 호출

클래스 컨스트럭터 또는 인스턴스 메서드에서 스태틱메서드를 호출하려면 클래스 이름 뒤에.및 스태틱 방식:

className.staticMethodName();
Code language: CSS (css)

또는 다음 구문을 사용할 수 있습니다.

this.constructor.staticMethodName();
Code language: CSS (css)

요약

  • JavaScript 정적 메서드는 클래스의 인스턴스 간에 공유됩니다.그러므로 그들은 클래스에 묶여있다.
  • 해당 클래스의 인스턴스가 아닌 클래스 이름을 사용하여 스태틱메서드를 호출합니다.
  • 를 사용합니다.className.staticMethodName()또는this.constructor.staticMethodName()클래스 생성자 또는 인스턴스 메서드에서 정적 메서드를 호출합니다.

 

 

 

참고: https://www.javascripttutorial.net/es6/javascript-static-method/
728x90
반응형

'Programing > Javascript' 카테고리의 다른 글

JavaScript Computed Property  (0) 2022.06.27
JavaScript Static Properties  (0) 2022.06.27
JavaScript Class Expressions  (0) 2022.06.26
JavaScript Getters and Setters  (0) 2022.06.26
JavaScript 클래스  (0) 2022.06.26

댓글