Skip to content

dicksont/define-uniqueid

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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 you come across any problems.

About

uniqueId property generator for arbitrary object types

Resources

License

Stars

Watchers

Forks

Packages

No packages published