如何模仿AngularJs装饰器在vanilla Javascript(ES6)中做了什么?

问题描述 投票:0回答:1

AngularJs装饰器提供一种在不影响原始服务的情况下扩展服务中的功能的有效方法。如何使用javascript类模拟此行为?

我有2个图书馆。一个包含通用逻辑和UI元素,另一个包含我正在构建的页面。我必须扩展在包含我特定核心逻辑的库中编写的类,然后使用核心库中的扩展版本的函数。我确实理解这可能看起来像一个错误的设计,但是AngularJS中的装饰器可以实现同样的效果。但是,我使用的是普通的ES6类。那我该怎么办呢?

javascript angularjs es6-class
1个回答
0
投票

相当愚蠢的例子:

class A {foo() {console.log(1)}}
var a  = new A();
// super decorate
var t  = a.foo; a.foo = () => { console.log(2); t()}
// awesome result:
a.foo()
>> 2
>> 1
© www.soinside.com 2019 - 2024. All rights reserved.