Node.js 在实践中如何通过引用传递函数参数

问题描述 投票:0回答:1

我发现了以下关于如何使用内置 JavaScript 功能通过引用传递参数的建议:
[Javascript] JavaScript 中的值传递和引用传递
TypeScript 通过 ref 参数传递[重复]

然而,它们在实践中都不起作用。考虑以下代码示例:

let data = {
    prop1: '[1,2,3]',
    prop2: '{"abc":"def"}'
}

function parseString(ref prop) {
    if(typeof prop === 'string') {
        prop = JSON.parse(prop);
    }
}

parseString(data.prop1);
parseString(data.prop2);

使用装箱方法

{item: data.prop1}
不起作用,因为该框将包含副本,而不是对原始
data.prop1
属性的引用。

如何正确实现上面的例子?

javascript node.js pass-by-reference
1个回答
0
投票

实现

parseString
功能的一种方法是指定父对象和一个字符串来指示引用的属性。这是实现该示例的代码:

function parseString(data, propName) {
    if (!Object.keys(data).includes(propName)) {
        throw new Error(`Object does not contain key ${propName}.`);
    }

    if(typeof prop === 'string') {
        data[propName] = JSON.parse(data[propName]);
    }
}

parseString(data, 'prop1');
parseString(data, 'prop2');
© www.soinside.com 2019 - 2024. All rights reserved.