传递函数后不要更改对象
don't change object after passing function
myObject = {foo: foo, bar: bar}
function myFunc(obj){
obj.foo = 'new foo';
}
myFunc(myObject); {foo: 'new foo', bar: bar}
为什么myObject会改变?我不想改变它
问题是对象是通过引用传递的。如果不希望函数修改输入参数,则可以在将对象传递给函数之前创建对象的深层副本。或者更好的是,尽可能多地编写纯函数 - 没有任何副作用。
myObject = {foo: foo, bar: bar}
function myFunc(obj){
obj.foo = 'new foo';
}
myFunc(JSON.parse(JSON.stringify(myObject)));
您应该在
myObject
下定义foo
属性,如下所示。
Object.defineProperty(myObject, 'foo', {
value: '<value u want to put for this object>'
configurable: false,
writable: false,
});
configurable
属性指示是否可以删除属性以及是否可以更改其属性(可写属性除外)。
writable
属性指示是否可以更改属性值。
相关文章:
- javascript:作为对象或函数传递
- 将jQuery对象传递到setTimeout递归函数中
- 将对象传递给函数.JavaScript
- 如何将对象传递给这个js函数
- 想要将ng个repeat对象传递给自定义筛选函数
- 一次将多个对象传递给函数参数
- 将文档对象传递给函数
- 如何在 ajax 调用中将对象传递给函数
- 如何调用另一个js文件中的函数或触发一个自定义事件,该事件将参数作为Jquery中的数据对象传递
- 如何将事件对象传递给对象中的函数
- 我可以使用一个函数来帮助分配和验证作为对象传递的属性吗
- 如何通过html链接将特定对象传递给函数
- setTimeout()/setInterval()赢得't执行**我正在传递函数对象,而不是执行函数
- Grails richui自动完成将对象传递给函数或更新对象ID
- 如何在同时传递 $(this) 对象的函数中调用函数
- 使用 JSrender将 DOM 级别 JS 对象传递给模板函数
- 如何在 JavaScript 中将对象传递到函数中
- 删除 JavaScript 中的重复代码;更新对象传递到函数中
- Jquery如何将对象传递给另一个函数
- 传递对对象 javascript 函数的引用