【问题标题】:What is the order of execution for method decorators?方法装饰器的执行顺序是什么?
【发布时间】:2017-10-10 17:20:14
【问题描述】:

考虑以下 JavaScript 代码:

class Example {

    @foo
    public methodOne() {}

    @bar
    public methodTwo() {}

}

foobar 将按什么顺序执行?请注意,我对各种 JS 引擎如何实现它不感兴趣,但根据规范,正确的方法是什么。我需要知道我是否可以依靠这种行为在 JS 引擎中保持一致。

了解 TypeScript 装饰器的行为方式是否相同也会很有趣。

【问题讨论】:

  • 方法声明的顺序无关紧要,首先修饰哪个方法无关紧要。你想做什么你认为你需要依赖执行顺序?
  • 它用于路由器(目前尚未编写),您可以在其中使用@get("index.htm") 装饰方法以将它们映射到 HTTP 请求。
  • 您的意思是您不会将它们映射到单个文件(显然没有重复),而是映射到它们的应用顺序很重要的规则? TBH,我根本不会使用class 这样做,甚至不会使用方法——它们的名字是微不足道的。它应该是一个规则函数元组(对象)的列表(数组)。
  • @Bergi 我有理由将此评论缩小到包含的设计范围。我只想说我对这个问题的答案很感兴趣,即使它的所有应用都很愚蠢。
  • 那么是的,类元素按出现顺序进行评估:ecma-international.org/ecma-262/8.0/…

标签: javascript typescript decorator


【解决方案1】:

foo 和 bar 将按什么顺序执行?

按出场顺序。所以foo 然后bar

【讨论】:

    猜你喜欢
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 2016-10-28
    • 2015-06-21
    • 2016-12-14
    • 1970-01-01
    • 2012-02-01
    相关资源
    最近更新 更多