关于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.4k
2 个回答

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

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

推荐问题