Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们可以在JavaScript中向不可变对象添加属性吗?_Javascript_Reactjs_Ecmascript 6_Immutable.js_Ecmascript 2017 - Fatal编程技术网

我们可以在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,它只会创建普通数组和对象文本。你能发布一些代码来创建一个真正的不可变对象吗?你的问题得到回答了吗?如果是,请标记正确答案。如果没有,请对给出的答案进行评论,并说明为什么这些答案没有回答您的问题。