关于Immutable.is
测试结果:
//测试1
let a={a:1, b:1, c:1};
let b={a:1, b:1, c:1};
var map1 = Immutable.Map(a);//需要转为Immutable数据,在用is比较
var map2 = Immutable.Map(b);
console.log(map1 === map2);//false
console.log(Object.is(map1, map2));//false
console.log(Immutable.is(map1, map2));//true
//测试2
let a={a:{d:2}, b:1, c:1};
let b={a:{d:2}, b:1, c:1};
var map1 = Immutable.Map(a);
var map2 = Immutable.Map(b);
console.log(map1 === map2);//false
console.log(Object.is(map1, map2));//false
console.log(Immutable.is(map1, map2));//false
//测试3
let a={a:[1,2,3], b:1, c:1};
let b={a:[1,2,3], b:1, c:1};
var map1 = Immutable.Map(a);
var map2 = Immutable.Map(b);
console.log(map1 === map2);//false
console.log(Object.is(map1, map2));//false
console.log(Immutable.is(map1, map2));//false
//测试4
let a={a:{d:2}, b:1, c:1};
let b={a:{d:2}, b:1, c:1};
var map1 = Immutable.fromJS(a);
var map2 = Immutable.fromJS(b);
console.log(map1 === map2);//false
console.log(Object.is(map1, map2));//false
console.log(Immutable.is(map1, map2));//true
结果:is用作比较两个引用类型的值是否相等,在数据嵌套的情况下,测试3失效的原因是Map不能做深层次的Immutable转化。对于嵌套的数据结构,转Immutable的时候,使用fromJS