@3imed-jaberi/deepfreeze 中文文档教程
@3imed-jaberi/deepfreeze
The modern and amiable deep freeze, works with Map and Set ????
Features
- ????Inspired by many solutions in a modern way.
- Recursively
Object.freeze()
for objects, functions and arrays. - Support for
Map
andSet
. - Add
.isDeepFrozen()
method for each frozen object. - Support Pure Deep Freeze through deep clone.
- Handle primitives types natively.
Installation
# npm
$ npm install @3imed-jaberi/deepfreeze
# yarn
$ yarn add @3imed-jaberi/deepfreeze
Usage
这是一个如何使用的实际示例。
"use strict";
const deepfreeze = require("@3imed-jaberi/deepfreeze");
const object = {
someBoolean: true,
someNumber: 10,
someString: "hello!",
someObject: { foo: "bar", someNestedObject: { nested: "inObject" } },
someArray: [false, 20, "bye!", { nested: "inArray" }],
someMap: new Map(["item1", "item2"]),
someSet: new Set(["item1", "item2"]),
};
const frozenObject = deepfreeze(object);
Object.isFrozen(frozenObject); // true
Object.isFrozen(frozenObject.someBoolean); // true
Object.isFrozen(frozenObject.someNumber); // true
Object.isFrozen(frozenObject.someString); // true
Object.isFrozen(frozenObject.someObject); // true
Object.isFrozen(frozenObject.someObject.foo); // true
Object.isFrozen(frozenObject.someObject.someNestedObject); // true
Object.isFrozen(frozenObject.someObject.someNestedObject.nested); // true
Object.isFrozen(frozenObject.someArray); // true
frozenObject.someArray.forEach((value) => {
Object.isFrozen(value); // true
});
frozenObject.someMap.clear(); // Error: Map is read-only.
frozenObject.someSet.clear(); // Error: Set is read-only.
API
您可以将一些参数传递给冻结方法;
object
— (Object) object to deep freeze.options.isProd
— (Boolean) ignore freezing in production (for better performance) (default to false
).options.pureFreeze
— (Boolean) uselodash.cloneDeep
to create a copy and use it dealing the freezing process (default to false
).
如果传递的对象由我们的方法处理,一个名为 isDeepFrozen
的方法将作为属性插入到对象中。
License
@3imed-jaberi/deepfreeze
The modern and amiable deep freeze, works with Map and Set ????
Features
- ???????? Inspired by many solutions in a modern way.
- ???? Recursively
Object.freeze()
for objects, functions and arrays. - ???? Support for
Map
andSet
. - ???? Add
.isDeepFrozen()
method for each frozen object. - ???? Support Pure Deep Freeze through deep clone.
- ???? Handle primitives types natively.
Installation
# npm
$ npm install @3imed-jaberi/deepfreeze
# yarn
$ yarn add @3imed-jaberi/deepfreeze
Usage
This is a practical example of how to use.
"use strict";
const deepfreeze = require("@3imed-jaberi/deepfreeze");
const object = {
someBoolean: true,
someNumber: 10,
someString: "hello!",
someObject: { foo: "bar", someNestedObject: { nested: "inObject" } },
someArray: [false, 20, "bye!", { nested: "inArray" }],
someMap: new Map(["item1", "item2"]),
someSet: new Set(["item1", "item2"]),
};
const frozenObject = deepfreeze(object);
Object.isFrozen(frozenObject); // true
Object.isFrozen(frozenObject.someBoolean); // true
Object.isFrozen(frozenObject.someNumber); // true
Object.isFrozen(frozenObject.someString); // true
Object.isFrozen(frozenObject.someObject); // true
Object.isFrozen(frozenObject.someObject.foo); // true
Object.isFrozen(frozenObject.someObject.someNestedObject); // true
Object.isFrozen(frozenObject.someObject.someNestedObject.nested); // true
Object.isFrozen(frozenObject.someArray); // true
frozenObject.someArray.forEach((value) => {
Object.isFrozen(value); // true
});
frozenObject.someMap.clear(); // Error: Map is read-only.
frozenObject.someSet.clear(); // Error: Set is read-only.
API
You can pass some arguments to the freeze method;
object
— (Object) object to deep freeze.options.isProd
— (Boolean) ignore freezing in production (for better performance) (default to false
).options.pureFreeze
— (Boolean) uselodash.cloneDeep
to create a copy and use it dealing the freezing process (default to false
).
If the passed object handled by our method, a method called isDeepFrozen
will be inserted as property to the object.