Socket
Socket
Sign inDemoInstall

prr

Package Overview
Dependencies
0
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    prr

A better Object.defineProperty()


Version published
Weekly downloads
11M
decreased by-1.06%
Maintainers
1
Install size
10.6 kB
Created
Weekly downloads
 

Package description

What is prr?

The npm package 'prr' provides a simple and effective way to set properties on objects with specific property attributes in JavaScript. It is particularly useful for managing property descriptors with ease, allowing developers to control enumerable, writable, and configurable attributes.

What are prr's main functionalities?

Setting properties with custom attributes

This feature allows the setting of properties on an object while defining their attributes such as enumerable, writable, and configurable. The example shows how to set a non-enumerable property, which will not show up in Object.keys() but is still accessible on the object.

const prr = require('prr');

let obj = {};
// Setting a non-enumerable property
prr(obj, 'secret', 'hidden value', 'e');

console.log(Object.keys(obj)); // Will not show 'secret'
console.log(obj.secret); // Outputs 'hidden value'

Other packages similar to prr

Readme

Source

prr Build Status

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

Usage

Set the property 'foo' (obj.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 })

Simplify!

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(...).

Licence

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 LICENSE.md file for more details.

Keywords

FAQs

Last updated on 22 Jul 2014

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc