/**
@member {string} Seemple.Array#trackBy
@importance 2
@since 1.2
@abstract
@summary Властивість ``trackBy`` вказує на ім'я властивості ідентифікатора об'єктів, що входять в масив
@desc У разі, якщо клієнт і сервер активно обмінюються даними (наприклад, списком користувачів), а об'єкти, що входять в масив мають унікальний ID (наприклад, ідентифікатор користувача), то перерисовка всієї колекції з нуля не має сенсу. Після того, як сервер повернув нову колекцію, набагато раціональніше перевірити, чи є в колекції об'єкт з таким само ID і, якщо об'єкт знайдений, оновити його. Таким чином, не створюється новий об'єкт (екземпляр {@link Seemple.Array#Model}) і не створюється новий DOM вузол.

``trackBy`` працює тільки при використанні методу {@link Seemple.Array#recreate}, так як це єдиний метод який "перестворює" колекцію заново.

У прикладі нижче використовується ``_id`` як ключ ідентифікатора.

```js
class MyArray extends Seemple.Array {
	get trackBy() {
		return '_id';
	}
	constructor() {
		//...
	}
});

const arr = new MyArray();

// додає два об'єкти в масив
arr.recreate([
	{_id: 0, name: 'Foo'},
	{_id: 1, name: 'Bar'},
	{_id: 2, name: 'Baz'}
]);

// Видалить об'єкт з ідентифікатором 0
// Додасть об'єкт з ідентифікатором 3
// Оновить об'єкт з ідентифікатором 1, перезаписавши name: Bar -> BarNew
// Оновить об'єкт з ідентифікатором 2, перезаписавши name: Baz -> BazNew
// Пересорує колекцію у відповідності з переданим даними
arr.recreate([
	{_id: 1, name: 'BarNew'},
	{_id: 3, name: 'Qux'},
	{_id: 2, name: 'BazNew'}
]);
```

Властивість може містити спеціальне значення ``"$index"``, яке дозволяє оновлювати об'єкт за індексом в колекції.

```js
class MyArray extends Seemple.Array {
	get trackBy() {
		return '$index';
	}
	constructor() {
		//...
	}
});

const arr = new MyArray();

// додасть два об'єкти в масив
arr.recreate([
	{name: 'Foo'},
	{name: 'Bar'},
	{name: 'Baz'}
]);

// оновить всі три об'єкти новими даними
// і додасть новий об'єкт з ім'ям Qux
arr.recreate([
	{name: 'NewFoo'},
	{name: 'NewBar'},
	{name: 'NewBaz'},
	{name: 'Qux'}
]);
```

@see {@link Seemple.Array#recreate}
*/
