假设我有一个简单的对象a = {b: 2}。我知道有两种方法来获取 a 的属性 b 的值:
点符号:a.b // 2
和
括号表示法:a['b'] // 2
除了实用性之外,是否存在任何方法可以从对象 a 获取 b 的值而不使用这两种方法(点表示法和括号表示法)中的任何一种?MDN 关于属性访问器的页面仅列出了 2 个方法。
这只是我的好奇心。我知道存在一些晦涩的方法来调用不带括号的函数,例如
parseInt`5.1`
Run Code Online (Sandbox Code Playgroud)
我想看看属性访问是否可以做类似的晦涩难懂的事情。
不要忘记Object.getOwnPropertyDescriptor():
const object1 = {
property1: 42
}
const descriptor1 = Object.getOwnPropertyDescriptor(object1, 'property1');
console.log(descriptor1.value);//42
Run Code Online (Sandbox Code Playgroud)
它不会搜索原型链,但它适用于直接属性,值得注意的是,因为您可以使用它来搜索原型链的递归函数:)