如何将对象表示法转换为字符串



假设我们有一个对象

export const hello = {
a: 1,
b: 2
}

我们导入它,得到一个函数

import { hello } from ...
function printVarName(x) {
...
}
printVarName(hello.b)

如何转换hello。B到字符串'hello。B '?

目标是能够从本例中printVarName内部的变量x创建字符串'hello.b'

这不可能。在变量传递给函数后确定变量的原始名称

在变量的值被传递给函数之后,没有办法知道变量的原始名称是什么。

我能想到的最接近的东西是:

解决方案涉及安装dot-prop包,该包用于解析字符串并查找对象中的相关属性。https://www.npmjs.com/package/dot-prop

声明:我与包本身没有关联

它也涉及到改变你的实现,因为你现在还需要传递你引用的对象本身。

import { getProperty } from 'dot-prop';
import { hello } from ...
function printVarName(obj, path) {
const value = getProperty(obj, path);

console.log(path, value);
}
printVarName({hello}, 'hello.b')

我们在作为第一个形参提供的对象中进行解构赋值。

传递{ hello }将传递一个与{ hello: hello }相同的对象,所以当你使用getProperty方法时,它可以找到hello变量和它的嵌套值。

如果要从函数定义的作用域之外传递变量,第一个形参是必需的。否则,您可以创建一个包含所有变量值的常量对象,这将使您无需在提供对象的第一个参数中使用该参数。

相关内容

  • 没有找到相关文章

最新更新