Return Javascript 中的对象按值
Return Object by value in Javascript
我知道 Javascript 中的对象是通过引用传递的,但是有什么方法可以将 return 对象作为值。
多次调用 decodePermissions() 时,它们总是共享同一个对象。所以我的问题是,有什么方法可以为每次调用创建对象吗?
function decodePermissions(table, group) {
return {
add: canPerformAction(table, group, ACTION.ADD),
edit: canPerformAction(table, group, ACTION.EDIT),
delete: canPerformAction(table, group, ACTION.DELETE)
}
}
不,您可以深复制对象和return那个新对象
function returnObj( obj )
{
return JSON.parse( JSON.stringify( obj ) );
}
我假设每次函数 decodePermissions(table, group).add(table, group, ACTION.ADD);被调用,您想创建一个全新的对象。
我不确定这是否是您要查找的内容,但我在下面的 jsbin link 中附上了一个基本示例
https://jsbin.com/jofikudite/edit?html,js,console,output
每次调用 objCreator.createNewObject(param) 时,它都会创建一个全新的对象,该对象不会以任何方式 linked 到通过此函数创建的其他对象。
我知道 Javascript 中的对象是通过引用传递的,但是有什么方法可以将 return 对象作为值。
多次调用 decodePermissions() 时,它们总是共享同一个对象。所以我的问题是,有什么方法可以为每次调用创建对象吗?
function decodePermissions(table, group) {
return {
add: canPerformAction(table, group, ACTION.ADD),
edit: canPerformAction(table, group, ACTION.EDIT),
delete: canPerformAction(table, group, ACTION.DELETE)
}
}
不,您可以深复制对象和return那个新对象
function returnObj( obj )
{
return JSON.parse( JSON.stringify( obj ) );
}
我假设每次函数 decodePermissions(table, group).add(table, group, ACTION.ADD);被调用,您想创建一个全新的对象。
我不确定这是否是您要查找的内容,但我在下面的 jsbin link 中附上了一个基本示例
https://jsbin.com/jofikudite/edit?html,js,console,output
每次调用 objCreator.createNewObject(param) 时,它都会创建一个全新的对象,该对象不会以任何方式 linked 到通过此函数创建的其他对象。