define-uniqueid

0.0.6 • Public • Published

Build Status npm version Bower version

Define-uniqueid is a sequential, unique id generator that can be attached to arbitrary object prototypes. We would like to think that the following are its advantages over the alternatives:

  • Portability - It works across all the different JavaScript module formats.
  • Efficiency - uniqueId's are generated lazily, on-demand. This saves CPU cycles and memory space.
  • Customizability - You can add uniqueId to more specialized prototypes other than Object. You can customize the uniqueId by passing in your own formatting function, in the defineUniqueId call.

License

Usage

DOM / Chrome / Safari / Firefox / Opera

<script src="/bower_components/define-uniqueid/uniqid.js"></script>
<script>
var undefineFx = defineUniqueId(HTMLElement);
var div = document.createElement('div');
div.uniqueId;
</script> 

CommonJS / Node

 
var defineUniqueId = require('define-uniqueid');
var undefineFx = defineUniqueId(Object);
({}).uniqueId;
 

AMD / Require.js

requirejs.config({
  baseUrl: '.',
  paths: {
    'define-uniqueid': './uniqid'
  }
});
 
requirejs(['define-uniqueid'], function(defineUniqueId) {
  var undefineFx = defineUniqueId(Object);
  ({}).uniqueId;
});
 
 

Options

An object containing options can be passed in the defineUniqueId call.

defineUniqueId(Object, {
  configurable: true,
  enumerable: true,
  redefine: true,
  format: function(id) { return 'obj-' + id; }
})

opts.property

Default: 'uniqueId'

Customize the name of the unique ID property.

opts.format

Customize the uniqueId by passing in your own formatting function.

defineUniqueId(Object, { format: function(id) { return 'obj-' + id; })

opts.configurable

Default: false

False means that the uniqueId property cannot be redefined. True means that the property can be redefined in both the object and the prototype object.

opts.enumerable

Default: false

True means that the uniqueId property can be enumerated.

opts.redefine

Default: false

By default, an error is thrown when the Object prototype already has a defineUniqueId property. Set this to true, to suppress these errors and to allow this property to be redefined.

Browser Support

This library has been tested with good success on a variety of browsers including :

  • Google Nexus 7 : Android 4.1
  • Samsung Galaxy S3 : Android 4.1
  • Chrome 36.0 : Windows 8.1
  • Firefox 30.0 : Windows 8.1
  • Safari 7.0 : OS X Mavericks

Internet Explorer is a confirmed exception. You should be able to work around this, by checking for the the presence of IE's doppelganger uniqueID first. Something like this:

var uniqueId = div.uniqueID || div.uniqueId;

Let me know if your particular browser has issues.

Package Sidebar

Install

npm i define-uniqueid

Weekly Downloads

1

Version

0.0.6

License

MIT

Last publish

Collaborators

  • dicksont