javascript Object.assign() functionality

javascript Object.assign() functionality

本文关键字:functionality assign Object javascript      更新时间:2024-02-28

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

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(?。。

我花了一些时间看,否则我尽量不问这样的问题。我也知道还有其他类似的帖子,但没有什么能像我所问的那样,而且我在这里没有直接回应帖子等的"声誉",所以我没有找到一个简单的方法来集中讨论。不管怎样,谢谢你的帮助!

您所要求的基本上是通过引用的调用机制,或者显式创建对变量的引用的能力。在JavaScript中,这是不可能的。您可以(正如您所注意到的)传递对对象的引用,并使用这些引用来修改对象属性值(甚至添加和删除属性),但这并不完全相同。

这将是javascript不支持的真正的引用赋值。它只支持错误的、被误解的引用赋值。

由于不能处理引用,因此可以简单地将objRef作为全局变量,而不将其作为arg传递。那么您正在更新原始对象。