Safely use a JavaScript object as hash
__ __ _
/ /_ ____ ______/ /_ (_)____
/ __ \/ __ `/ ___/ __ \ / / ___/
/ / / / /_/ (__ ) / / / / (__ )
/_/ /_/\__,_/____/_/ /_(_)_/ /____/ 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