资讯专栏INFORMATION COLUMN

ECMAScript6:官方最新Decorator修饰器构造函数重写了。。。

王陆宽 / 2926人阅读

摘要:改变发布了最新版本,最新版本的模块名称都改成前缀,具体可前往英文官网查看,中文网站文档尚未更新插件包都已更换名称,以官网为准,不然会报错构造函数完全更改,一脸懵逼原先个参数改为一个对象参数,参数字段具体如下图具体查看介绍新的写法根据最

改变

babel发布了最新版本,npm最新版本的模块名称都改成@babel前缀,具体可前往babel英文官网查看,中文网站文档尚未更新

插件 plugin包都已更换名称,以官网为准,不然会报错

Decorator 构造函数完全更改,一脸懵逼:),原先target ,name, descriptor3个参数改为一个对象参数,参数字段具体如下图

具体查看 介绍https://tc39.github.io/propos...

新的写法

根据最新的api我写了小demo如下:

function decoratorclass (target) {
  if (target.kind !== "class") {
    return
  }
  for (const element of target.elements) {
    if (element.kind !== "method") {
      continue
    }
    const descriptor = element.descriptor
    const oldMethod = descriptor.value
    descriptor.value = (...args) => {
      console.time(element.key)
      const ret = oldMethod.apply(this, args)
      console.timeEnd(element.key)
      return ret
    }
  }
}

@decoratorclass
class Numberic {
    number = "3.1415926"

    static name = "Bob"

    add (...num) {
      return num.reduce((p, n) => (p + n), 0)
    }

    all () {
      return "1"
    }
}

new Numberic().add(1, 1, 1)
new Numberic().all(1, 1, 1)

控制台输出

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99398.html

相关文章

  • ECMAScript6(18):Decorator修饰

    摘要:修饰器修饰器是提出的一个提案,用来修改类的行为。目前需要才可以使用。其执行格式如下是修饰器名,即函数名相当于修饰器函数接受个参数,依次是目标函数属性名可忽略该属性的描述对象可忽略。 修饰器 修饰器是 ES7 提出的一个提案,用来修改类的行为。目前需要 babel 才可以使用。它最大的特点是:可以在编译期运行代码!其本质也就是在编译器执行的函数。其执行格式如下: @decorator ...

    tianyu 评论0 收藏0
  • 黄金搭档 -- JS 装饰Decorator)与Node.js路由

    摘要:即为装饰器函数的这里主要为了获取路由路径的前缀,为请求方法,为请求路径,为请求执行的函数。下边是设置路由路径前缀和塞入内容的装饰器函数就不多说了,就是挂载前缀路径到类的原型对象上,这里需要注意的是作用于类,所以是被修饰的类本身。 很多面对象语言中都有装饰器(Decorator)函数的概念,Javascript语言的ES7标准中也提及了Decorator,个人认为装饰器是和async/a...

    simon_chen 评论0 收藏0
  • 【用故事解读 MobX 源码(四)】装饰 和 Enhancer

    摘要:所以这是一篇插队的文章,用于去理解中的装饰器和概念。因此,该的作用就是根据入参返回具体的描述符。其次局部来看,装饰器具体应用表达式是,其函数签名和是一模一样。等装饰器语法,是和直接使用是等效等价的。 ================前言=================== 初衷:以系列故事的方式展现 MobX 源码逻辑,尽可能以易懂的方式讲解源码; 本系列文章: 《【用故事解...

    maybe_009 评论0 收藏0
  • Python函数修饰---当方法前遇到@参数化的修饰方法时发生的事

    一、前提概念   Python中的函数是对象。也因此,函数可以被当做变量使用。 二、代码模型 以下代码片段来自于: http://www.sharejs.com/codes/python/8361 # -*- coding: utf-8 -*- from threading import Thread import time class TimeoutEx...

    huashiou 评论0 收藏0

发表评论

0条评论

王陆宽

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<