!github actionsactions-imageactions-url
!coveragecodecov-imagecodecov-url
!dependency statusdeps-svgdeps-url
!dev dependency statusdev-deps-svgdev-deps-url
!Licenselicense-imagelicense-url
!Downloadsdownloads-imagedownloads-url
!npm badgenpm-badge-pngpackage-url
Define multiple non-enumerable properties at once. Uses
Then, with predicates:
!npm badgenpm-badge-pngpackage-url
Define multiple non-enumerable properties at once. Uses
Object.defineProperty
when available; falls back to standard assignment in older engines.
Existing properties are not overridden. Accepts a map of property names to a predicate that, when true, force-overrides.Example
var define = require('define-properties');
var assert = require('assert');
var obj = define({ a: 1, b: 2 }, {
a: 10,
b: 20,
c: 30
});
assert(obj.a === 1);
assert(obj.b === 2);
assert(obj.c === 30);
if (define.supportsDescriptors) {
assert.deepEqual(Object.keys(obj), ['a', 'b']);
assert.deepEqual(Object.getOwnPropertyDescriptor(obj, 'c'), {
configurable: true,
enumerable: false,
value: 30,
writable: false
});
}
Then, with predicates:
var define = require('define-properties');
var assert = require('assert');
var obj = define({ a: 1, b: 2, c: 3 }, {
a: 10,
b: 20,
c: 30
}, {
a: function () { return false; },
b: function () { return true; }
});
assert(obj.a === 1);
assert(obj.b === 20);
assert(obj.c === 3);
if (define.supportsDescriptors) {
assert.deepEqual(Object.keys(obj), ['a', 'c']);
assert.deepEqual(Object.getOwnPropertyDescriptor(obj, 'b'), {
configurable: true,
enumerable: false,
value: 20,
writable: false
});
}
Tests
Simply clone the repo,npm install
, and run npm test