首页 > 解决方案 > 何时使用 Javascript 装饰器与继承

问题描述

我正在学习如何在 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,具有继承性——如果父类和子类具有相同的方法,它将被翻转:子类将覆盖父类。在我不希望这种情况发生的情况下,装饰器将是理想的选择。那是对的吗?

PS我知道装饰器还没有正式使用该语言。

标签: javascriptdecorator

解决方案


推荐阅读