应用于类而不是方法

时间:2015-10-06 19:01:59

标签: javascript decorator babeljs

尝试将装饰器应用于课程时。方法,它似乎将它应用于课堂。我,不熟悉装饰器/注释,它很可能是用户错误。

这是一个非常快速的例子,我已经掀起了:

class Decorators {
    static x (y, z) {
        return method => {
            // do stuff with y, z, method
            // method should be the method that I decorate
        }
    }
}

class Foo {
    @Decorators.x('foo', 'bar')
    static main () {
        // ...
    }
}

正如您所看到的,在装饰器内部,该方法应该等于static main方法,但是当我向装饰器添加console.log以查看方法是什么时,它会记录{ {1}}(这是通过Babel翻译后的Foo类)......

据我所知,Babel.js正在将装饰器应用到类中,即使它已经在方法上设置了。不过我可能错了。

1 个答案:

答案 0 :(得分:4)

第一个参数是target(它可以是类构造函数 - 用于静态,原型 - 用于非静态,而实例,在属性的情况下)。第二个是方法的名称:

return (target, name, descriptor) => {
  console.log(name);
}