Javascript 获取sencha类的所有静态属性

Javascript 获取sencha类的所有静态属性,javascript,extjs,sencha-touch-2,Javascript,Extjs,Sencha Touch 2,获得了Sencha Touch 2类,定义如下: Ext.define("Foo.Bar", { statics: { lol: "trololol", /* ... many others ... */ asd: "trololol" } }); 如果Iconsole.log(“%o”,Foo.Bar)我得到以下输出: function () { return this.constructor.apply(t

获得了Sencha Touch 2类,定义如下:

Ext.define("Foo.Bar", {

    statics: {

        lol: "trololol",

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

        asd: "trololol"

    }

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

function () {
    return this.constructor.apply(this, arguments);
}
如何在不检查所有属性的情况下获得类中所有静态的可读表示


[编辑]定义类后,我正在操作静态,添加一些属性或修改其内容,因此我需要一个在应用程序执行过程中的给定时间工作的解决方案,为我提供类的所有静态属性及其值。

您可以获得如下现有属性名称:

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));

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

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

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

访问您的属性。这些静态在定义时被添加到类中,因此它在定义之后不会跟踪它们。你想做什么?你对个人房产感兴趣吗<代码>控制台.log(Foo.Bar.lol)
应该do@Evan我正在操作这些属性,并想知道它们在应用程序生命周期中某个给定时间的状态。@Pranav,不,我需要一种方法来同时显示所有静态,因为有很多静态。这可能是一个很好的解决方法,但我希望保持代码干净(没有不必要的嵌套),另外,我不会为了得到一条调试消息而搜索/替换一个非常大的项目。谢谢,我成功地使用了你的助手来完成我必须做的事情,即使它包含了一些我定义之外的静态信息(Sencha的东西:$className,$isClass等等)。我想我可以通过名称很容易地过滤掉它们。在接受之前,我还要再等一段时间,看看是否会有更好的答案。