【发布时间】:2014-08-28 23:10:17
【问题描述】:
我很想知道是否有一种 Ext 方法可以获取调用函数的名称,而无需使用 arguments.callee.caller(因为它已被弃用)并命名我的函数。假设我有这个代码:
Ext.Loader.setConfig({
enabled: true
});
Ext.define('Mixin', {
logWarning: function logWarning() {
console.log('warning: ' + this.$className + '::' + arguments.callee.toString()); // displays function logWarning() ...
console.log('warning: '+ this.$className + '::' + arguments.callee.caller.toString()); // displays functions() ...
}
});
Ext.define('My.Panel', {
extend: 'Ext.panel.Panel',
mixins: ['Mixin']
});
Ext.application({
name: 'Test',
launch: function() {
Ext.define('MyPanel', {
extend: 'My.Panel',
width: 200,
height: 300,
initComponent: function() {
this.callParent();
this.logWarning();
}
});
Ext.create('MyPanel', {
renderTo: Ext.getBody()
});
}
});
在我的 logWarning 函数中,第一个 console.log 字符串显示了函数名称,因为我为函数命名。然而,在大多数 Ext 应用程序中,函数保持匿名,因为没有必要,因为我使用像 this.logWarning 这样的范围,并且在我的代码。
我想知道的是,有没有办法使用一些我不知道的 Ext 函数来获取调用函数的名称?我可以使用 this.$className 轻松获取类名,但我敢肯定这是不受欢迎的......
【问题讨论】:
标签: javascript extjs extjs4 extjs4.2