Когда использовать декораторы Javascript против наследования - PullRequest
2 голосов
/ 20 марта 2019

Я изучаю, как использовать декораторы в Javascript, и не понимаю, когда целесообразно использовать наследование классов против декораторов?

Например, следующее использует декораторы для добавления метода в класс. Он также переписывает один из методов декорированных классов.

import $ from "jquery";

function write(msg) {
  $("#app").prepend(msg);
}

function clean(constructor) {
  return class extends constructor {
    foo() {
      write("<h1>from the Decorated class</h1>");
    }
    bar() {
      write("I haz bar");
    }
  };
}

@clean
class Hello {
  foo() {
    write("<h1>from the undecorated class</h1>");
  }
}

const h = new Hello();
h.();

AFAIK, с наследованием - если родительский и дочерний классы имеют одинаковые методы, это будет перевернуто: child перезапишет родительский класс. В ситуации, когда я НЕ хотел бы, чтобы это произошло, декораторы были бы желаемым выбором. Это правильно?

P.S. Я знаю декораторов еще не официально на языке.

...