클래스에서 함수 앞에있는 "get"키워드는 무엇입니까?


106

get이 ES6 수업에서 무엇을 의미합니까? 이 함수를 어떻게 참조합니까? 어떻게 사용해야합니까?

class Polygon {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }

  get area() {
    return this.calcArea()
  }

  calcArea() {
    return this.height * this.width;
  }
}

5
그것은 단지 게터 일 가능성이 높지만 객체 대신 클래스 안에 있습니다. 실제로 ES6 전용이 아닙니다.
user4642212

@Xufox ES6 특정이 아니라는 의미는 무엇입니까?
Keith Nicholas

1
@KeithNicholas : ES5에서도 똑같이 작동했습니다.
Bergi

@KeithNicholas Getters는 ES5 이후로 존재한다고 생각합니다. 여기서 ES6의 유일한 것은 class구문이지만 getter는 새로운 것이 아닙니다.
user4642212 2015-08-13

답변:


109

이는 함수가 속성에 대한 getter임을 의미합니다.

그것을 사용하려면 다른 속성과 마찬가지로 이름을 사용하십시오.

'use strict'
class Polygon {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }

  get area() {
    return this.calcArea()
  }

  calcArea() {
    return this.height * this.width;
  }
}

var p = new Polygon(10, 20);

alert(p.area);


2
클래스는 암시 적으로 엄격 모드 btw에 있습니다. ecma-international.org/ecma-262/6.0/#sec-strict-mode-code
Kit Sunde

1
@KitSunde-적어도 내 브라우저 (Chrome, Win7)에서는 해당 설명이 없으면 샘플 작업 대신 콘솔 오류가 발생합니다. 그리고 이것은 "Run code snippet"버튼이 아닌 것처럼 "The Answer"의 일부가 아닙니다.
Amit

4
그냥 전화 할 수 p. calcArea없나요? 그렇지 않다면 왜 안됩니까?
ksav

9
Polygon.calcArea ()에 대한 호출도 getter 역할을하므로 get / set 키워드는 구문상의 설탕입니까?
Craig O. Curtis

그래서 함수 get get키워드는 매개 변수를 가질 수 없습니까?
jay1234

47

요약:

get키워드는 함수 객체의 속성을 바인딩합니다. 이제이 속성을 조회하면 getter 함수가 호출됩니다. getter 함수의 반환 값은 반환되는 속성을 결정합니다.

예:

const person = {
    firstName: 'Willem',
    lastName: 'Veen',
    get fullName() {
        return `${this.firstName} ${this.lastName}`;
    }

}

console.log(person.fullName);
// When the fullname property gets looked up
// the getter function gets executed and its
// returned value will be the value of fullname


2
실용적인 예를 위해 엄지 척!
Niket Pathak

8
더 단순화 할 수있을 것 같아요. 'get'을 사용하면 마치 객체의 단순한 속성 인 것처럼 클래스 메서드를 처리 할 수 ​​있습니다. 'get'을 생략해도 .area 대신 .area ()를 호출하여 값에 액세스 할 수 있습니다.
dwilbank


0

또는 더 간단한 방법으로 함수 이름을 입력하기 만하면 "()"사용자없이 함수를 호출 할 수 있습니다.

위의 두 함수는 person.fullName () 및 person.fullName에 대한 동일한 관심입니다.

const person = {
    firstName: 'Willem',
    lastName: 'Veen',
    fullName() {
        return `${this.firstName} ${this.lastName}`;
    }

}

console.log(person.fullName());

const person = {
    firstName: 'Willem',
    lastName: 'Veen',
    get fullName() {
        return `${this.firstName} ${this.lastName}`;
    }

}

console.log(person.fullName);

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.