Files
simple-bookreader/client/islets/core/y-unique-id/y-unique-id.js
Oleg Mokhov f3546ef3a5 Release
2015-06-20 14:48:34 +05:00

45 lines
1.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Модуль для генерации уникальных идентификаторов.
*/
modules.define('y-unique-id', function (provide) {
// Префикс имеет 3 применения:
// - гарантирует уникальность идентификаторов для каждой загрузки страницы
// - имя свойства, в котором хранятся id, выданные объектам
// - уникальный id для window
var prefix = 'id_' + Date.now() + Math.round(Math.random() * 10000);
var counterId = 0;
provide({
/**
* Генерирует уникальный идентификатор.
*
* @returns {String}
*/
generate: function () {
return prefix + (++counterId);
},
/**
* Генерирует уникальный идентификатор и присваивает его переданному объекту.
* Если объект уже имеет идентификатор, просто возвращает его.
*
* @param {Object} obj
* @returns {String}
*/
identify: function (obj) {
return obj === window ? prefix : obj[prefix] || (obj[prefix] = this.generate());
},
/**
* Возвращает `true`, если объект имеет уникальный идентификатор.
*
* @param {Object} obj
* @returns {Boolean}
*/
isIdentified: function (obj) {
return obj.hasOwnProperty(prefix);
}
});
});