不可变对象可以是以下实例:
Immutable.ListImmutable.MapImmutable.OrderedMapImmutable.SetImmutable.OrderedSetImmutable.StackGaj*_*jus 23
我已经了解到使用instanceof确定对象是不可变的是不安全的:
模块A:
var Immutable = require('immutable');
module.exports = Immutable.Map({foo: "bar});
Run Code Online (Sandbox Code Playgroud)
模块B:
var Immutable = require('immutable');
var moduleA = require('moduleA');
moduleA instanceof Immutable.Map // will return false
Run Code Online (Sandbox Code Playgroud)
Immutable.js API定义了以下方法来检查对象是否是Immutable的实例:
和
后者检查是否:
如果是Iterable或其任何子类,则为True.
List,Stack,Map,OrderedMap,Set和OrderedSet是所有子类Iterable.
Ant*_*vik 19
Immutable.js自v4.0.0-rc.1以来有isImmutable()函数:
import { isImmutable, Map, List, Stack } from 'immutable';
isImmutable([]); // false
isImmutable({}); // false
isImmutable(Map()); // true
isImmutable(List()); // true
isImmutable(Stack()); // true
isImmutable(Map().asMutable()); // false
Run Code Online (Sandbox Code Playgroud)
如果您使用以前的版本之一,则可以通过以下方式检查对象是否为Immutable:
Immutable.Iterable.isIterable(YOUR_ENTITY)
Run Code Online (Sandbox Code Playgroud)
因为所有不可变的都继承自Iterable对象
| 归档时间: |
|
| 查看次数: |
23022 次 |
| 最近记录: |