2017-01-07 3 views
6

실제로 ES6 클래스 정의에서 getter 및 setter 메서드는 무엇입니까? 그들은 사실 프로토 타입 소품입니까? 예 :실제로 ES6 클래스 getter 및 setter는 무엇입니까?

class Person{ 
    constructor(){}; 
    get name(){ 
    return 'jack'; 
    } 
    set name(){ 
    // ??? 
    } 
} 

이는 Person.prototype.name = 'jack'과 동일합니다.

과 또 다른 질문, 내가 좋아하는 인스턴스의 소품을 활용 세터의 볼 예했습니다 :

class Person{ 
    constructor(){}; 
    get name(){ 
    return 'jack'; 
    } 
    set name(val){ 
    // like this 
    // name = val; 
    } 
} 

무엇을 할 수 :

class Person{ 
    constructor(){ 
    this._name = 'jack'; 
    }; 
    get name(){ 
    return this._name; 
    } 
    set name(val){ 
    this._name = val; 
    } 
} 

내가이 방법을 싶지 해달라고을, 나는 같은 것을 원하는 끝난?

+0

HTTPS를 거짓이기 때문에 캔트 속성 x.name 을 읽고, 오류가 발생합니다. org/ko-kor/docs/Web/JavaScript/Reference/Functions/get 및 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set –

+0

이름은 무엇입니까? 마지막 예제에서'name = val'입니까? 나는 이해하지 못한다. 당신이 달성하고자하는 것을 설명 할 수 있습니까? –

+0

[ECMAScript 6 클래스의 getter 및 setter 란 무엇입니까?] (https://stackoverflow.com/questions/28222276/what-are-getters-and-setters-for-in-ecmascript-6-classes) – Drenmi

답변

9

예, 수행 할 수 있습니다 : 그냥 세터/게터 구문을 삭제하고 대신 초기화 중에 클래스에 속성을 추가 :

class Person{ 
    constructor(name){ 
     this.name = name; 
    } 
} 

게터/세터 구문은 계산에 근거해야 속성이 존재 다른 속성하는 주어진 radius의 원에서 area 재산과 같은 :

class Circle { 
    constructor (radius) { 
     this.radius = radius; 
    } 
    get area() { 
     return Math.PI * this.radius * this.radius; 
    } 
    set area (n) { 
     this.radius = Math.sqrt(n/Math.PI); 
    } 
} 

또는 firstName 및와 Person 개체의 전체 이름을 얻고 10 속성. 당신은 아이디어를 얻습니다.

+0

우리는 클래스가 실제로 프로토 타입에 대한 속기임을 알고 있으며, 생성자 메서드에서 객체를 인스턴스화 할 수 있습니다. 그러나, 내가 원했던 것은 클래스 정의 내에서 프로토 타입의 소품을 생성자 메서드로 정의하는 것이다. – feiyuerenhai

+0

인스턴스 자체의 속성을 사용하지 않고 – feiyuerenhai

+1

영역 설정자는'this.radius = Math.sqrt (n/Math.PI);이어야합니다. – alphakevin

2

MDN 당 get 구문은 개체 속성을 해당 속성을 조회 할 때 호출 할 함수에 바인딩합니다.

여기서 'jack'이라는 문자열 만 반환합니다. 어떤 속성에도 바인딩되지 않습니다.

흥미롭게을 console.log (Person.prototype.name)는 잭에게 기록

그러나 Person.hasOwnProperty (이름이) 거짓

도 한 번 우리가 const를 X = 새로운 사람 즉, 전화 한 사람의 인스턴스를 생성 로그() ; //developer.mozilla : -

을 console.log (x.name는)>이 x.hasOwnProperty (이름)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get

관련 문제