如果我创建这样的对象:
var obj = {};
obj.prop1 = "Foo";
obj.prop2 = "Bar";
Run Code Online (Sandbox Code Playgroud)
生成的对象总是这样吗?
{ prop1 : "Foo", prop2 : "Bar" }
Run Code Online (Sandbox Code Playgroud)
也就是说,属性是否与我添加它们的顺序相同?
我正在考虑使用 ES6 Map对象为我做散列,而不是创建自定义散列函数。然而,在我看来,它对不变性的支持并不多,这对于 React 和 Redux 来说都是一个关键的事情。
我习惯于不使用任何库来实现不变性,而只使用简单的解构:
const newObj = { ...prevObj, newKey: "value" }
Run Code Online (Sandbox Code Playgroud)
或使用数组映射/过滤。
但是,ES6Map具有直接更新对象本身的方法。
我能想到的是做这样的事情:
var myMap = new Map()
Var myNewMap = { ...myMap.set() }
this.setState({ myMap:myNewMap })
Run Code Online (Sandbox Code Playgroud)
但我不确定这是否有效。