如何装饰对象中定义的类

时间:2018-07-26 21:04:54

标签: javascript json class object decorator

如何修饰定义为对象中值的类?

以Addy Osmani [1]最出色的例子为例,

function superhero(target) {
    target.isSuperhero = true;
    target.power = 'flight';
}

@superhero
class MySuperHero() {}

console.log(MySuperHero.isSuperHero); // true

现在,假设我们将超级英雄类创建为对象中的值,如下所示:

let heros = {
    myHero : class MySuperHero() {}   
}

以上课程的装饰方式如何?

我的第一个想法是将装饰器放到键值对的前面,但是我什至没有尝试,因为那没有道理。 @superhero将被理解为对象中的第一个键:

let heros = {
    @superhero    
    myHero : class MySuperHero() {}   
}

我的第二个想法是像这样将其封闭在一个块中,但这也会引发错误:

let heros = {
    myHero : {
        @superhero
        class MySuperHero() {}
    }
}

也许是IIFE?我担心自己会踩在薄冰上。 Tyvm,Keith:^)

  1. https://medium.com/google-developers/exploring-es7-decorators-76ecb65fb841

0 个答案:

没有答案