What is define-property?
The define-property npm package is used to define a new property directly on an object, or modify an existing property on an object, and return the object. It is a convenience wrapper around Object.defineProperty that allows you to easily set configurable, enumerable, and writable property attributes.
What are define-property's main functionalities?
Define a new property with default attributes
This feature allows you to define a new property on an object with default attributes. The property will be configurable, enumerable, and writable.
{"object": {"foo": "bar"}, "propertyName": "newProp", "value": 123}
Define a new property with custom attributes
This feature allows you to define a new property on an object with custom attributes, such as making the property non-writable.
{"object": {"foo": "bar"}, "propertyName": "newProp", "descriptor": {"value": 123, "configurable": true, "enumerable": true, "writable": false}}
Other packages similar to define-property
object-define-property
This package provides similar functionality to define-property by allowing you to define a new property on an object. It is a direct polyfill for Object.defineProperty, which can be useful for environments that do not support the ES5 method.
property-expr
While not a direct alternative, property-expr allows you to work with property paths. It can compile strings into functions that can set properties on an object, which can be seen as a more dynamic way to define properties.
define-property
Define a non-enumerable property on an object.
Install
Install with npm
$ npm i define-property --save
Usage
Params
obj
: The object on which to define the property.prop
: The name of the property to be defined or modified.descriptor
: The descriptor for the property being defined or modified.
var define = require('define-property');
var obj = {};
define(obj, 'foo', function(val) {
return val.toUpperCase();
});
console.log(obj);
console.log(obj.foo('bar'));
get/set
define(obj, 'foo', {
get: function() {},
set: function() {}
});
Related projects
- delegate-object: Copy properties from an object to another object, where properties with function values will be… more | homepage
- forward-object: Copy properties from an object to another object, where properties with function values will be… more | homepage
- mixin-deep: Deeply mix the properties of objects into the first object. Like merge-deep, but doesn't clone. | homepage
- mixin-object: Mixin the own and inherited properties of other objects onto the first object. Pass an… more | 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 © 2015 Jon Schlinkert
Released under the MIT license.
This file was generated by verb-cli on August 31, 2015.