-
Notifications
You must be signed in to change notification settings - Fork 1
The minimal way to safely use JavaScript objects as hashes
License
akidee/hash.js
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
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 0
No packages published