Class System
Defining Classes
javascript
Ext.define('MyApp.view.Main', {
extend: 'Ext.panel.Panel',
config: {
title: 'My Panel'
},
initComponent: function() {
this.callParent(arguments);
}
});Inheritance
javascript
Ext.define('MyApp.view.CustomPanel', {
extend: 'MyApp.view.Main',
alias: 'widget.custompanel',
initComponent: function() {
this.title = 'Custom Panel';
this.callParent(arguments);
}
});Mixins
javascript
Ext.define('MyApp.mixin.Sortable', {
sort: function() {
// sorting logic
}
});
Ext.define('MyApp.view.Grid', {
extend: 'Ext.grid.Panel',
mixins: ['MyApp.mixin.Sortable']
});Singleton Pattern
javascript
Ext.define('MyApp.util.Constants', {
singleton: true,
API_URL: 'https://api.example.com',
TIMEOUT: 30000
});Statics
javascript
Ext.define('MyApp.util.Helper', {
statics: {
formatDate: function(date) {
return Ext.Date.format(date, 'Y-m-d');
}
}
});
// Usage
MyApp.util.Helper.formatDate(new Date());Key Concepts
- extend: Inherits from parent class
- config: Auto-generates getters/setters
- alias: Widget type for xtype
- mixins: Share functionality across classes
- singleton: Single instance pattern
- statics: Class-level methods
Best Practices
- Use meaningful class names
- Follow namespace conventions
- Keep classes focused and single-purpose
- Document configs and methods
- Use proper inheritance hierarchy