Статические члены класса и секция Static

В Ext JS 4 можно использовать статические члены классов. Такие члены классов относятся не к определенному объекту, а ко всему классу. Статические члены класса вводятся в секции static:

Ext.define('Classes.Person', {
	config: {
			name: 'Eugene',
			surname : 'Popov'
	},
	statics: {
        instanceCount: 0,
        // статический метод, возвращающий объект класса
        factory: function(name, surname) {
            return new this({name: name, surname: surname});
        }
    },
    constructor: function(config) {
        this.initConfig(config);
		// свойство 'self' ссылается на класс объекта
        this.self.instanceCount ++;
    },
    getinfo: function() 
	{
		alert("Полное имя : " + this.name + " " + this.surname);
    },
  });

var eugene = Ext.create('Classes.Person');
eugene.getinfo();
var james = Classes.Person.factory('James', 'Gosling');
alert(Classes.Person.instanceCount);
james.getinfo();

Здесь в секции static мы объявляем, во-первых, статическую переменную instanceCount, которая будет обозначать количество созданных объектов данного класса. И данная переменная будет общей для всех объектов этого класса.

Во-вторых, объявляется статическая функция factory создает объект данного класса.

В конструкторе мы обращаемся к классу текущего объекта и увеличиваем переменную на единицу: this.self.instanceCount ++

В итоге при обращении к статическим членам объекта нам надо будет указывать имя класса, а не имя объекта: alert(Classes.Person.instanceCount);

    Поддержать сайт на родительском проекте КГБ