【发布时间】:2016-09-02 10:44:57
【问题描述】:
在原始 JS 对象上使用 Immutable.fromJS() 可以按预期工作并返回一个 Map,但尝试对从构造函数获取的自定义对象执行相同的 Immutable.fromJS() 不起作用。
意思:
-
{/*1*/}:console.log返回自定义对象。 -
{/*2*/}:console.log返回相同的自定义对象,即使我使用了Immutable.fromJS()。 -
{/*3*/}:console.log返回自定义对象。 -
{/*4*/}:console.log返回map = 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!)
【问题讨论】:
-
如果你不关心性能,你可以试试 Immutable.fromJS(JSON.parse(JSON.stringify(myConstructedObject)))。
-
我很关心性能和可读性; ) 所以感谢您的建议,但我宁愿不使用上述方法。最好的!
标签: javascript constructor immutability immutable.js