Skip to content
/ hash.js Public

The minimal way to safely use JavaScript objects as hashes

License

Notifications You must be signed in to change notification settings

akidee/hash.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

    __               __        _
   / /_  ____ ______/ /_      (_)____
  / __ \/ __ `/ ___/ __ \    / / ___/
 / / / / /_/ (__  ) / / /   / (__  )
/_/ /_/\__,_/____/_/ /_(_)_/ /____/  v0.2.1
                        /___/




hash.js is a simple way to safely use a JavaScript object as hash.

Fast: Usage of a regular object as the hash

Safe: Any key can be used. Keys with names that start with "__" are internally escaped to circumvent the mess that JS implementations induce with "magic" properties like __proto__, __count__, __parent__




Installation

npm install hash




Example in node.js

var hash = require('hash')

var existingDataWithEscapedKeys = { __: 1, b: 2, '__parent__%': 3 }

var myHash = new hash(existingDataWithEscapedKeys /* optional */)

myHash.set('a', 123)
myHash.set('__proto__', 'value')

myHash.get('__parent__') // 3
myHash.get('a') // 123
myHash.get('__proto__') // 'value'

myHash.has('constructor') // false

myHash.del('a')

myHash.get('a') // undefined

myHash.del('__parent__')

myHash.getData() // { __: 1, b: 2, '__proto__%': 'value' }

myHash.forEach(function iterator (value, key) {

	// ...
} /*, optionalThisArg */)




Tested in

node.js
IE 5.5+, FF 3+, Chrome 1+, Opera 10+, Safari 4+
Mobile Safari 4.0




Further reads

http://www.devthought.com/2012/01/18/an-object-is-not-a-hash/
http://www.2ality.com/2012/01/objects-as-maps.html

About

The minimal way to safely use JavaScript objects as hashes

Resources

License

Stars

Watchers

Forks

Packages

No packages published