我知道Javascript中的对象是通过引用传递的,但有没有办法将对象作为值返回。
当多次调用decodePermissions()时,它们总是共享同一个对象。所以我的问题是,有没有办法为每次调用创建对象?
function decodePermissions(table, group) {
return {
add: canPerformAction(table, group, ACTION.ADD),
edit: canPerformAction(table, group, ACTION.EDIT),
delete: canPerformAction(table, group, ACTION.DELETE)
}
}
答案 0 :(得分:1)
我假设每次函数decodePermissions(table,group).add(table,group,ACTION.ADD);被调用,你想创建一个新的新对象。
我不确定这是否是你要找的,但我在下面的jsbin链接上附上了一个基本的例子
https://jsbin.com/jofikudite/edit?html,js,console,output
每次调用objCreator.createNewObject(param)时,它都会创建一个新的新对象,该对象不会以任何方式链接到通过此函数创建的其他对象。
答案 1 :(得分:0)
不,您可以深度复制对象并返回该新对象
function returnObj( obj )
{
return JSON.parse( JSON.stringify( obj ) );
}