如何访问使用装饰器的对象?

时间:2018-10-24 05:06:00

标签: javascript decorator

我想通过使用装饰器注入许多组件需要的HTML元素。这是我要实现的用法:

const serializedCSS = '...';    // Serialized CSS

@injectStyle(serializedCSS);
class MyComponent extends HTMLElement {
   ...

我想将序列化的CSS发送给decorator,但是我找不到如何访问“ MyComponent”类的方法,我必须访问它自己的属性才能创建新的样式元素并将其作为子元素添加。

function injectStyle(target: any) {
    console.log(target);

    // ??? HOW TO ACCESS THE OBJECT? ///

    function f(...args:any) {

    }

    return f;
}

我找不到与此相关的任何解决方案。任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:0)

这是我的解决方法。

export function injectStyle(css:string, ...args:any) {
    return function(target:any) {
        // Now I can access target object with "target"!
        target.doSomething ... 
        ...
    };
}

现在我可以使用injectStyle装饰器,如下所示:

@injectStyle(require('./style.css'))
class App extends HTMLElement {
    ...
}