获取sencha类的所有静态属性

时间:2013-12-17 09:48:18

标签: javascript extjs sencha-touch-2

将Sencha Touch 2类定义如下:

Ext.define("Foo.Bar", {

    statics: {

        lol: "trololol",

        /* ... many others ... */

        asd: "trololol"

    }

});

如果我console.log('%o', Foo.Bar);我得到以下输出:

function () {
    return this.constructor.apply(this, arguments);
}

如何在不检查所有属性的情况下获得类中所有静态的可读表示?

[编辑]在定义我的类之后,我正在操纵静态,添加一些属性或修改它们的内容,所以我需要一个在应用程序执行的给定时间工作的解决方案,给我所有类的静态属性和他们的价值观。

2 个答案:

答案 0 :(得分:2)

您可以获取现有的属性名称:

console.log(Ext.Object.getKeys(Foo.Bar));

然后,您可以优化此概念以获得更具可读性和/或有用的输出。例如:

function getStatics(cls, includeFunctions, includeProto) {
    var isFunction = Ext.isFunction,
        o = {},
        v;
    Ext.each(Ext.Object.getKeys(Foo.Bar), function(key) {
        if (includeProto || cls.hasOwnProperty(key)) {
            v = cls[key];
            if (includeFunctions || !isFunction(v)) {
                o[key] = v;
            }
        }
    });
    return o;
}

console.log(getStatics(Foo.Bar));

答案 1 :(得分:0)

这可能不完全符合您的要求,但为什么不使用可访问的单个静态属性:

Ext.define("Foo.Bar", {
    statics: {
        statics : {
            lol: "trololol",
            /* ... many others ... */
            asd: "trololol"
        }
    }
});

现在您可以使用Foo.Bar.statics

访问您的媒体资源