Returns true if a value has the characteristics of a valid JavaScript data descriptor.
true when the descriptor has valid properties with valid values.
false when not an object or when the object has invalid properties.
varisDataDesc=require('is-data-descriptor');varassert=require('assert');assert.equal(true,isDataDesc({value: 'foo'}));assert.equal(true,isDataDesc({value: function(){}}));assert.equal(true,isDataDesc({value: true}));assert.equal(false,isDataDesc('a'));assert.equal(false,isDataDesc(null));assert.equal(false,isDataDesc([]));assert.equal(false,isDataDesc({value: 'foo',bar: 'baz'}));assert.equal(false,isDataDesc({value: 'foo',bar: 'baz'}));assert.equal(false,isDataDesc({value: 'foo',get: function(){}}));assert.equal(false,isDataDesc({get: function(){},value: 'foo'}));assert.equal(false,isDataDesc({value: 'foo',enumerable: 'foo'}));assert.equal(false,isDataDesc({value: 'foo',configurable: 'foo'}));assert.equal(false,isDataDesc({value: 'foo',writable: 'foo'}));The only valid data descriptor properties are the following:
configurable(required)enumerable(required)value(optional)writable(optional)
To be a valid data descriptor, either value or writable must be defined.
Invalid properties
A descriptor may have additional invalid properties (an error will not be thrown).
varfoo={};Object.defineProperty(foo,'bar',{enumerable: true,whatever: 'blah',// invalid, but doesn't cause an errorget(){return'baz';}});assert.equal(foo.bar,'baz');- is-accessor-descriptor: Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.
- is-descriptor: Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… more
Simply clone the repo, npm install, and run npm test
