用javascript方法装饰器包装构造函数

时间:2017-02-16 07:13:27

标签: javascript typescript constructor decorator ecmascript-next

引用: Override constructor with an class decorator? http://blog.wolksoftware.com/decorators-metadata-reflection-in-typescript-from-novice-to-expert-part-ii

我想在应用方法装饰器时使用自定义类包装类构造函数(即以与类装饰器相同的方式)。我需要这个,因为我有另一个将调用类的组件,并将执行装饰的方法。让组件执行被装饰的方法并不困难,但是因为装饰器在实例化类之前运行,所以装饰方法不会与类实例相关联,因此无法访问任何类状态(即这个==未定义)。所以我希望能够在类实例化(即构造函数)期间为组件提供方法引用,以便它绑定到当前实例。

所以我想这样做(打字稿):

class Foo {
  constructor(private value) { }

  @execute
  bar() {
    return this.value;
  }
}

这会产生与此相同的影响:

class Foo {
  constructor(private value) {
    StaticComponent.AddReference(this.bar().bind(this));
}

  bar() {
    return this.value;
  }
}

如果我的其他组件有对bar()的引用,它应该能够使用具有对其实例的完全访问权限的bar来执行它。

我试图以类似于类装饰器的方式覆盖目标等的原型,但是无法使其工作。

0 个答案:

没有答案