Мне интересно узнать, есть ли способ получить имя вызывающей функции, не используя arguments.callee.caller (поскольку это было устаревшим) и назвал мои функции. Скажем, у меня есть этот код:Ext JS: Получить имя вызывающей функции
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, о которой я не знаю? Я могу легко захватить className с помощью . $ ClassName, но я уверен, что это нахмурило ...