ImmutableJS 不适用于新的自定义对象实例

ImmutableJS not working with new custom object instance

在原始 JS 对象上使用 Immutable.fromJS() 按预期工作,returns 映射,但尝试对从构造函数获得的自定义对象执行相同的操作 Immutable.fromJS() 工作。

含义:

我在文档中找不到任何解释。

{/*EXPORTING CONSTRUCTOR*/}
export function MyObject() {
  this.id = null;
  this.name = '';
}

{/*EXPORTING RAW OBJECT*/}
export my_object = {
  this.id = null;
  this.name = '';
}

//in another file
//importing, and than:

let myConstructedObject = new MyObject();
let myRawObject = my_object;

{/*1*/} console.log(myConstructedObject) // => object
{/*2*/} console.log(Immutable.fromJS(myConstructedObject)) // => object ?!?!

{/*3*/} console.log(myRawObject) // => object
{/*4*/} console.log(Immutable.fromJS(myRawObject)) // => map (OK!)

我认为这个话题的人:实际上是从建设性的角度讨论了同样的问题。

总结那个讨论,你不能只是 "Immutivize" 一个自定义对象,但你可以自己编写一个不可变对象,使用 Immutable.Record(使用纯 ImmutableJS)或 Map(使用 'extendable-immutable'图书馆。)