(术语)如何引用变量中的变量
(Terminology) How to refer to a variable within a variable?
我需要澄清一些术语,因为现在我的项目在引用变量时有一些术语混合。
考虑一个定义如下的对象:
var anObject = {
a: {
value1: 1337,
value2: 69,
value3: "420 man"
}
}
如果我错了,请纠正我,但我认为a
是对象anObject
的属性。
但是在anObject
的语境中,我应该如何指代value1
?它也是"财产"吗?
我问的原因是我需要创建函数来访问对象的"变量中的变量"。像这样:
function getProperty(name) {
// ...
}
var theValueImLookingFor = getProperty("a.value1");
如果这个问题不适合堆栈溢出,请让我知道我应该在哪里作为这个问题。谢谢
编辑:我不是在问如何访问嵌套变量,而是在问如何在术语中引用它。
鉴于value1
是a
的属性,而anObject
的属性。什么是value1
anObject
?是"财产-财产"吗?我不是故意听起来轻率,但我怎么称呼它?
就像a
是anObject
的属性一样,value1
是a
的属性。
因此,您可以使用以下命令访问它:
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
的属性。这并不优雅,但在技术上是正确的,正如我所说,我认为没有更好的(官方(术语。
- JavaScript变量引用数组时出现问题
- 通过另一个变量引用变量名称,或从变量确定变量名称
- 使用clearInterval方法实现的是将区间变量引用设置为null,而不是
- JavaScript闭包和变量引用
- 使用Javascript变量引用JSON键
- jQuery变量引用顺序
- 如何将变量引用传递给Observable订阅
- 这些变量引用如何工作
- 更改 JavaScript 中的变量引用
- Javascript变量引用/范围问题
- 在变量引用中使用函数参数
- 在打字稿中创建动态变量引用
- 根据对元素的变量引用从 DOM 中删除该元素
- 闭包中变量引用的意外行为
- 使用变量引用对象属性
- 基于变量引用的 Javascript 更改变量
- 使用变量引用样式属性
- 在 JavaScript 中使用变量引用 JSON 数字键
- 如何将全局作用域变量引用到局部作用域中
- 通过循环变量引用Javascript数组元素