在 JavaScript 中,是否有任何方法可以在不使用点符号或方括号符号的情况下获取对象的属性?

Luc*_*ien 2 javascript syntax

假设我有一个简单的对象a = {b: 2}。我知道有两种方法来获取 a 的属性 b 的值:

点符号:a.b // 2

括号表示法:a['b'] // 2

除了实用性之外,是否存在任何方法可以从对象 a 获取 b 的值而不使用这两种方法(点表示法和括号表示法)中的任何一种?MDN 关于属性访问器的页面仅列出了 2 个方法。


这只是我的好奇心。我知道存在一些晦涩的方法来调用不带括号的函数,例如

parseInt`5.1`
Run Code Online (Sandbox Code Playgroud)

我想看看属性访问是否可以做类似的晦涩难懂的事情。

Raf*_*ael 5

不要忘记Object.getOwnPropertyDescriptor()

const object1 = {
  property1: 42
}

const descriptor1 = Object.getOwnPropertyDescriptor(object1, 'property1');
console.log(descriptor1.value);//42
Run Code Online (Sandbox Code Playgroud)

它不会搜索原型链,但它适用于直接属性,值得注意的是,因为您可以使用它来搜索原型链的递归函数:)