关于ES7中的Decorator

export function nameLog(target,key,descriptor){

    let fn = descriptor.value; //setName函数
    
    descriptor.value = function(...args) {
      // 执行一些日记操作
      // .....
      return fn.apply(this, args);
    };
    return descriptor;
}
class Person {
    constructor(name) {
       this.name = name;
    }

    @nameLog
    setName(value){
      this.name = value
    }

    getName() {
        return this.name;
    }
}

看网上说,return descriptor是必须的,但是我删掉这行发现也是正常运行的,是怎么回事呢?

阅读 1.3k
2 个回答

这个的标准还没完全定下来呢吧
还有 发下说必须返回descriptor的链接

// 猜测
删除正常运行 是因为setName 这个函数没有返回值 执行完成就已赋值成功
你试试 getName 不给 return descriptor

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题