define-data-property Version Badge

github actions coverage License Downloads

npm badge

Define a data property on an object. Will fall back to assignment in an engine without descriptors.

The three non* argument can also be passed null, which will use the existing state if available.

The loose argument will mean that if you attempt to set a non-normal data property, in an environment without descriptor support, it will fall back to normal assignment.

Usage

```javascript var defineDataProperty = require('define-data-property'); var assert = require('assert');

var obj = {}; defineDataProperty(obj, 'key', 'value'); defineDataProperty( obj, 'key2', 'value', true, // nonEnumerable, optional false, // nonWritable, optional true, // nonConfigurable, optional false // loose, optional );

assert.deepEqual( Object.getOwnPropertyDescriptors(obj), { key: { configurable: true, enumerable: true, value: 'value', writable: true, }, key2: { configurable: false, enumerable: false, value: 'value', writable: true, }, } ); ```