.. | ||
test | ||
.editorconfig | ||
.eslintrc | ||
.jscs.json | ||
.travis.yml | ||
CHANGELOG.md | ||
index.js | ||
LICENSE | ||
package.json | ||
README.md |
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) {
.deepEqual(Object.keys(obj), ['a', 'b']);
assert.deepEqual(Object.getOwnPropertyDescriptor(obj, 'c'), {
assertconfigurable: 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) {
.deepEqual(Object.keys(obj), ['a', 'c']);
assert.deepEqual(Object.getOwnPropertyDescriptor(obj, 'b'), {
assertconfigurable: true,
enumerable: false,
value: 20,
writable: false
;
}) }
Tests
Simply clone the repo, npm install
, and run
npm test