Javascript 获取sencha类的所有静态属性
获得了Sencha Touch 2类,定义如下: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
Ext.define("Foo.Bar", {
statics: {
lol: "trololol",
/* ... many others ... */
asd: "trololol"
}
});
如果Iconsole.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等等)。我想我可以通过名称很容易地过滤掉它们。在接受之前,我还要再等一段时间,看看是否会有更好的答案。