No description, website, or topics provided.
Switch branches/tags
Nothing to show
Latest commit b69ba0e Jul 22, 2014 @rvagg rvagg 1.0.1
Failed to load latest commit information.
.gitignore initial commit Apr 1, 2013
.jshintrc initial commit Apr 1, 2013
.travis.yml travis bumpity bump Apr 1, 2013 plain MIT as Markdown Jul 22, 2014 plain MIT as Markdown Jul 22, 2014
package.json 1.0.1 Jul 22, 2014
prr.js initial commit Apr 1, 2013
test.js initial commit Apr 1, 2013

prr Build Status

An sensible alternative to Object.defineProperty(). Available in npm and Ender as prr.


Set the property 'foo' ( to have the value 'bar' with default options ('enumerable', 'configurable' and 'writable' are all false):

prr(obj, 'foo', 'bar')

Adjust the default options:

prr(obj, 'foo', 'bar', { enumerable: true, writable: true })

Do the same operation for multiple properties:

prr(obj, { one: 'one', two: 'two' })
// or with options:
prr(obj, { one: 'one', two: 'two' }, { enumerable: true, writable: true })


But obviously, having to write out the full options object makes it nearly as bad as the original Object.defineProperty() so we can simplify.

As an alternative method we can use an options string where each character represents a option: 'e'=='enumerable', 'c'=='configurable' and 'w'=='writable':

prr(obj, 'foo', 'bar', 'ew') // enumerable and writable but not configurable
// muliple properties:
prr(obj, { one: 'one', two: 'two' }, 'ewc') // configurable too

Where can I use it?

Anywhere! For pre-ES5 environments prr will simply fall-back to an object[property] = value so you can get close to what you want.

prr is Ender-compatible so you can include it in your Ender build and $.prr(...) or var prr = require('prr'); prr(...).


prr is Copyright (c) 2013 Rod Vagg @rvagg and licensed under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included file for more details.