2017-12-16 5 views
-1

클래스 기능의 작동 방식을 이해하는 데 어려움이 있습니다.ES2015의 새로운 클래스 기능을 이해할 수 없습니다.

간단한 일상 단어를 사용하여 다음 스 니펫 을 수퍼 유저로 간단하게 처리 할 수 ​​있습니까?

정말 모든 것을 파악하기가 어렵습니다.

그 훌륭한 기능은 매우 이상하게 보입니다.

미리 감사드립니다. 내가 이해하기 쉬운 생각

class Dessert { 
    constructor(calories = 250) { 
    this.calories = calories; 
    } 
} 

class IceCream extends Dessert { 
    constructor(flavor, calories, toppings = []) { 
    super(calories); 
    this.flavor = flavor; 
    this.toppings = toppings; 
    } 
    addTopping(topping) { 
    this.toppings.push(topping); 
    } 
} 
+0

ES5에서 생성자, 프로토 타입 및 상속이 어떻게 작동했는지 이해 했습니까? – Bergi

+1

"전체"란 무엇입니까, 아니면 '슈퍼'에 대해서만 묻고 있습니까? [일부 문서] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/super)를 읽었습니까? – Bergi

+0

안녕하세요 @Bergi 저는 ES5에서 프로토 타입 체인 및 상속의 개념을 이해합니다 하지만 저는 ES6의 새로운 기능 중 일부 기능이 저에게 이상하다고 생각합니다. – Sergiti

답변

1

은 아이스크림의 새로운 인스턴스를 생성하는 것입니다 :

var iceCream = new IceCream('vanilla'); 
console.log(iceCream) // IceCream {calories: 250, flavor: "vanilla", toppings: Array(0)} 

보시다시피, 당신은 열량 값을 전달하는 데 필요하지 않은 - 부모 클래스를 호출하고 있음을 소요 super을 값.

생성자 함수가 있고 새 인스턴스 constructor 메서드가 먼저 실행될 때 인스턴스화하여 속성에 설명 된대로 속성을 수집합니다.

의견이 분명한 경우 알려 주시기 바랍니다. 나는 더 많은 정보를 제공하고 싶다.

+0

고마워. 칼로리에 대해 다른 값을 설정하려면 어떻게해야합니까? 500을 말합니다. super()가 칼로리 값을 설정합니까? – Sergiti

+1

인스턴스'var iceCream = new IceCream ('vanilla', 500);을 인스턴스화하거나 나중에 칼로리 값'iceCream.calories = 500'을 변경하여 설정할 수 있습니다. –

+1

나는 본다. 나는 지금 그것을 더 잘 이해하고있다. super는 상속 한 객체에서 속성 또는 메서드에 액세스하기위한 것입니다. 감사합니다. – Sergiti