Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/xotic750/define-properties-x

Define multiple non-enumerable properties at once.
https://github.com/xotic750/define-properties-x

browser defineproperties defineproperty ecmascript nodejs object

Last synced: 4 days ago
JSON representation

Define multiple non-enumerable properties at once.

Awesome Lists containing this project

README

        


Travis status


Dependency status


devDependency status


npm version


jsDelivr hits


bettercodehub score


Coverage Status

## define-properties-x

Define multiple non-enumerable properties at once.

**See**: [define-properties](https://www.npmjs.com/package/define-properties)

- [define-properties-x](#module_define-properties-x)
- [`.properties(object, map, [predicates])`](#module_define-properties-x.properties)
- [`.property(object, prop, value, [force])`](#module_define-properties-x.property)

### `define-properties-x.properties(object, map, [predicates])`

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.

**Kind**: static method of [define-properties-x](#module_define-properties-x)

| Param | Type | Description |
| ------------ | ------------------- | ------------------------------------------- |
| object | Object | The object on which to define the property. |
| map | Object | The object of properties. |
| [predicates] | Object | The object of property predicates. |

**Example**

```js
import * as define from 'define-properties-x';

define.properties(
{
a: 1,
b: 2,
},
{
a: function() {
return false;
},
b: function() {
return true;
},
},
);
```

### `define-properties-x.property(object, prop, value, [force])`

Just like `properties` but for defining a single non-enumerable
property. Useful in environments that do not
support `Computed property names`. This can be done
with `properties`, but this method can read a little cleaner.

**Kind**: static method of [define-properties-x](#module_define-properties-x)

| Param | Type | Default | Description |
| ------- | ------------------------------------------ | ------------------ | ------------------------------------------- |
| object | Object | | The object on which to define the property. |
| prop | string \| Symbol | | The property name. |
| value | \* | | The value of the property. |
| [force] | boolean | false | If `true` then set property regardless. |

**Example**

```js
import * as define from 'define-properties-x';

const myString = 'something';
define.property(obj, Symbol.iterator, function() {}, true);
define.property(obj, myString, function() {}, true);
```