-
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