Борьба с ES6 функциями Javascript - PullRequest
0 голосов
/ 19 сентября 2018

Я просто изучаю ES6.Я вижу значение в обновлении, но я борюсь с методом класса.

class Item{
  constructor(name){
    this.name=name;
  }
}
class Park extends Item{
  constructor(name, numberoftrees, size){
    super(name);
    this.numberoftrees=numberoftrees;
    this.size=size;
  }
  classifyPark(){
    const classification = new Map();
    classification.set(1, "SMALL");
    classification.set(2, "MEDIUM");
    classification.set(3, "LARGE");
    console.log(`${this.name} park is sized: ${classification.get(this.size)} and has
    ${this.numberoftrees} trees.`)
  }
}



var Park1 = new Park();
Park1.name=prompt('ENTER NAME OF PARK');
Park1.numberoftrees=prompt('ENTER # OF TREES');
Park1.size=parseInt(prompt('ENTER SIZE'));


function reportPark(parks){
  console.log("PARK REPORT>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
  parks.forEach(item=>item.classifyPark());
}
reportPark(parks);

Зачем мне нужен classifyPark как метод моего класса?Почему я не должен просто создать отдельную Карту и получить к ней доступ напрямую?Я иду по курсу удэми, но никто не ответил на этот вопрос в Q & A, и я просто запутался.

classifyPark просто создает нашу карту, а затем использует свойство размера в качестве ключа на карте для входа в консоль.Значение.Это оно?Это похоже на сумасшедший способ делать вещи.

1 Ответ

0 голосов
/ 19 сентября 2018

Это тривиальный пример, но он показывает, что classifyPark обращается к переменным из класса Item с помощью this.

console.log(`${this.name} park is sized: ${classification.get(this.size)} and has ${this.numberoftrees} trees.`)

В "реальном мире" методы класса обычноболее сложный и может использовать переменные класса и другие методы класса, чтобы делать более сложные вещи.

Еще один тривиальный пример, но, возможно, что-то более полезное

class Circle {
  constructor(radius) {
    this.radius = radius;
  }

  area() {
    return 3.14*this.radius*this.radius;
  }

  circumference() {
    return 3.14*this.radius;
  }

}

const circle = new Circle();
console.log(circle.area());
console.log(circle.radius());

Идея поставить areaи circumference на Circle вместо того, чтобы иметь вспомогательные функции, заключается в инкапсуляции логики.Круг знает, как рассчитать свой радиус и окружность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...