is-data-descriptor
Returns true if a value has the characteristics of a valid JavaScript data descriptor.
Install
Install with npm:
$ npm i is-data-descriptor --save
Usage
var isDataDesc = require('is-data-descriptor');
Examples
true
when the descriptor has valid properties with valid values.
// `value` can be anything
isDataDesc({value: 'foo'})
isDataDesc({value: function() {}})
isDataDesc({value: true})
//=> true
false
when not an object
isDataDesc('a')
//=> false
isDataDesc(null)
//=> false
isDataDesc([])
//=> false
false
when the object has invalid properties
isDataDesc({value: 'foo', bar: 'baz'})
//=> false
isDataDesc({value: 'foo', bar: 'baz'})
//=> false
isDataDesc({value: 'foo', get: function(){}})
//=> false
isDataDesc({get: function(){}, value: 'foo'})
//=> false
false
when a value is not the correct type
isDataDesc({value: 'foo', enumerable: 'foo'})
//=> false
isDataDesc({value: 'foo', configurable: 'foo'})
//=> false
isDataDesc({value: 'foo', writable: 'foo'})
//=> false
Valid properties
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).
var foo = {};
Object.defineProperty(foo, 'bar', {
enumerable: true,
whatever: 'blah', // invalid, but doesn't cause an error
get: function() {
return 'baz';
}
});
console.log(foo.bar);
//=> 'baz'
Related projects
- is-accessor-descriptor: Returns true if a value has the characteristics of a valid JavaScript accessor descriptor. | homepage
- is-descriptor: Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… more | homepage
- isobject: Returns true if the value is an object and not an array or null. | homepage
Running tests
Install dev dependencies:
$ npm i -d && npm test
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Author
Jon Schlinkert
License
Copyright
This file was generated by verb on December 28, 2015.