将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);
}
如何在不检查所有属性的情况下获得类中所有静态的可读表示?
[编辑]在定义我的类之后,我正在操纵静态,添加一些属性或修改它们的内容,所以我需要一个在应用程序执行的给定时间工作的解决方案,给我所有类的静态属性和他们的价值观。
答案 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