我们可以在JavaScript中向不可变对象添加属性吗?
对象类似于:我们可以在JavaScript中向不可变对象添加属性吗?,javascript,reactjs,ecmascript-6,immutable.js,ecmascript-2017,Javascript,Reactjs,Ecmascript 6,Immutable.js,Ecmascript 2017,对象类似于: const obj = [{name: 'Alex', age: 20}, {name: 'James', age: 22}]; 此对象不受immutable.js的影响 是否可以为每个对象添加新键?例如: const obj = [{name: 'Alex', age: 20, city: 'New York'}, {name: 'James', age: 20, city: 'Rome'}]; 如果它是不变的,就不会。但这没关系,您可以将所有属性复制到新结构中,并以这种方式
const obj = [{name: 'Alex', age: 20}, {name: 'James', age: 22}];
此对象不受immutable.js的影响
是否可以为每个对象添加新键?例如:
const obj = [{name: 'Alex', age: 20, city: 'New York'}, {name: 'James', age: 20, city: 'Rome'}];
如果它是不变的,就不会。但这没关系,您可以将所有属性复制到新结构中,并以这种方式添加所需的内容:
const newData = obj.map(person => ({
...person,
city: someLogicToDetermineCity(person)
}))
function someLogicToDetermineCity(person) {
// logic based on person
return city
}
如果它是不变的,就不会。但这没关系,您可以将所有属性复制到新结构中,并以这种方式添加所需的内容:
const newData = obj.map(person => ({
...person,
city: someLogicToDetermineCity(person)
}))
function someLogicToDetermineCity(person) {
// logic based on person
return city
}
const
不会创建不变性-它只是意味着在创建时分配给它的引用以后不能更改(这只是意味着不能给它分配新值)
参见以下示例:
const a={}
a={name:“peter”}/=>TypeError:对const`a'的赋值无效
const
不会产生不变性-它只是意味着在创建时分配给它的引用以后不能更改(这仅仅意味着你不能给它赋值)
参见以下示例:
const a={}
a={name:“peter”}/=>TypeError:对const`a'的赋值无效
如果您只是尝试向每个对象添加属性,会发生什么?“此对象不可从immutable.js更改”-您发布的代码段不使用immutable.js,它只创建普通数组和对象文本。你能发布一些代码来创建一个真正的不可变对象吗?你的问题得到回答了吗?如果是,请标记正确答案。如果没有,请对给出的答案进行评论,并说明为什么这些答案没有回答您的问题。如果您只是尝试向每个对象添加属性,会发生什么情况?“此对象与immutable.js是不可变的”-您发布的代码段没有使用immutable.js,它只会创建普通数组和对象文本。你能发布一些代码来创建一个真正的不可变对象吗?你的问题得到回答了吗?如果是,请标记正确答案。如果没有,请对给出的答案进行评论,并说明为什么这些答案没有回答您的问题。