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

pnwntuvh  于 12个月前  发布在  Node.js
关注(0)|答案(1)|浏览(139)

我发现了以下关于如何使用内置JavaScript功能通过引用传递参数的建议:
[Javascript] Pass By Value And Pass By Reference In JavaScript
TypeScript pass by ref parameter [duplicate]
但是,它们在实践中都不起作用。考虑下面的代码示例:

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属性的引用。
如何正确执行上述示例?

tf7tbtn2

tf7tbtn21#

实现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');

字符串

相关问题