(术语)如何引用变量中的变量

(Terminology) How to refer to a variable within a variable?

本文关键字:变量 引用 何引用 术语      更新时间:2023-09-26

我需要澄清一些术语,因为现在我的项目在引用变量时有一些术语混合。

考虑一个定义如下的对象:

var anObject = {
    a: {
        value1: 1337,
        value2: 69,
        value3: "420 man"
    }
}

如果我错了,请纠正我,但我认为a对象anObject的属性。

但是在anObject的语境中,我应该如何指代value1?它也是"财产"吗?

我问的原因是我需要创建函数来访问对象的"变量中的变量"。像这样:

function getProperty(name) {
    // ...
}
var theValueImLookingFor = getProperty("a.value1");

如果这个问题不适合堆栈溢出,请让我知道我应该在哪里作为这个问题。谢谢

编辑:我不是在问如何访问嵌套变量,而是在问如何在术语中引用它

鉴于value1a的属性,而anObject的属性。什么是value1 anObject?是"财产-财产"吗?我不是故意听起来轻率,但我怎么称呼它?

就像aanObject的属性一样,value1a的属性。

因此,您可以使用以下命令访问它:

anObject.a.value1

就是这样。长答案是,这可以分解为以下代码:

const innerObject = anObject.a;
const result = innerObject.value1;

请注意,在 JavaScript 中,对象只不过是键值对的列表,即字典。你可以使用任何数据类型作为值,甚至是另一个对象,所以你最终得到嵌套对象 - 这正是你在这里所拥有的。

因此,对于您正在谈论的函数,您需要做的就是通过其分隔符字符(例如 .(拆分给定字符串,然后递归遍历对象树,直到到达您想要的位置。

请注意,例如在 npm 上已经有现成的模块可以做到这一点,例如嵌套键(只是任意命名,还有很多其他模块执行相同或至少类似的任务(。

即使是非常常用的库,如 Lodash 也提供了此功能,因此您很有可能不需要自己编写代码,但可以使用这种现成的函数。 例如,你可以使用Lodash的[get](https://lodash.com/docs/4.16.6#get]:

var object = { 'a': [{ 'b': { 'c': 3 } }] };
_.get(object, 'a[0].b.c');
// => 3
_.get(object, ['a', '0', 'b', 'c']);
// => 3
_.get(object, 'a.b.c', 'default');
// => 'default'

(此示例代码取自 get 上链接的 Lodash 文档。

如果你仍然想创建自己的实现,看看 Lodash 的源代码可能是一个很好的起点。

更新

关于您的编辑,我认为没有官方术语。您可以将其称为嵌套属性或子对象的属性。我想我宁愿像你最初所做的那样描述:value1是一个对象的属性,它是anObject的属性。这并不优雅,但在技术上是正确的,正如我所说,我认为没有更好的(官方(术语。