javascript - 如何模拟 AngularJs 装饰器在 vanilla Javascript (ES6) 中所做的事情?
问题描述
AngularJs 装饰器提供了一种在服务中扩展功能而不影响原始服务的有效方法。如何用 javascript 类模拟这种行为?
我有 2 个图书馆。一个包含通用逻辑和 UI 元素,另一个更具体到我正在构建的页面。我必须扩展在我的特定库中包含核心逻辑的库中编写的类,然后使用核心库中扩展版本的功能。我确实理解这可能看起来像是一个错误的设计,但是使用 AngularJS 中的装饰器可以实现同样的效果。但是,我使用的是普通的 ES6 类。那么我该怎么做呢?
解决方案
相当愚蠢的例子:
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
推荐阅读
- angular - 英雄之旅 - 步骤 8/HTTP - 内存中 webapi 返回未定义
- c# - C# 更新带有绑定到它的队列的绘图图表
- angularjs - 无法理解 angularjs 组件。之前只使用过指令
- android - Room 中的对象大小限制
- android - 如何从启动画面中隐藏操作栏?
- php - 只能循环一次 SQL 行?
- python - 为了解释两个论点的命题逻辑
- javascript - 通过 javascript 在 window.selection() 中查找 html 标签
- html - 无法让水平 scoll 菜单在 HTML 中工作
- ubuntu - 解密 GPG 文件