javascript Object.assign()功能

时间:2012-07-26 18:49:20

标签: javascript object pointers variable-assignment assign

我想直接从该函数的范围内更新函数参数引用的对象。一个例子:

var thisObj = { "val" : "original value" }; 
function modFunc(objRef) {
    objRef = { "val" : "modified" };
    console.log(objRef);  // { "val" : "modified" }
}
console.log(thisObj);  // { "val" : "original value" };

我理解为什么会这样,我意识到我可以使用

    objRef.val = "modified";

在modFunc中执行修改。出于特定于我的项目的原因,我希望能够完成类似的事情:

function modFunc(objRef) {
    objRef.self = { "val" : "modified" };  // Of course this will not work, 
    // but is there an Object property or method that allows one to access 
    // the actual memory pointer being referenced by the variable?
}

我可以指定我想直接修改thisObj以引用我在modFunc中实例化的新对象。这可能吗?我知道有一些像Object.assign()这样的工具可以用来做这个,但它不是普遍支持的,或者像我导入库时可以使用的bind()这样的库工具,但似乎可能有一些本机语法,这将允许我这样做,我只是无法找到它?..

我花了一些时间看,否则我尽量不提这样的问题。我也知道这个帖子还有其他类似的帖子,但没有什么完全像我要求的,我没有'声誉'在这里能够直接回应帖子等所以我没有看到一个简单的重点讨论的方式。无论如何,谢谢你的帮助!

3 个答案:

答案 0 :(得分:2)

您要求的基本上是按引用调用机制,或显式创建对变量的引用的能力。在JavaScript中,这是不可能的。您可以(如您所知)传递对对象的引用,并使用它们来修改对象属性值(以及添加和删除属性,甚至),但这不是完全相同的事情。

答案 1 :(得分:1)

这将是javascript不支持的引用的真正分配。它仅通过引用支持错误的,被误解的任务。

答案 2 :(得分:0)

因为你无法处理引用,所以你可以简单地将objRef作为一个全局变量,而不是将其作为arg传递。然后你要更新原始对象。