在 Swift 中,我可以定义一个类型,它使用以下命令将请求的属性的名称作为字符串返回@dynamicMemberLookup
:
@dynamicMemberLookup struct S {
subscript(dynamicMember member: String) -> String { member }
}
let s = S()
s.foo // returns "foo"
s.bar // returns "bar"
有没有办法在 JavaScript 中实现这种行为?从某种意义上说,我正在寻找一种方法来覆盖Object.getOwnPropertyDescriptor
. 我认为像下面这样的东西会起作用,但事实并非如此。
const cachedGOPD = Object.getOwnPropertyDescriptor
Object.getOwnPropertyDescriptor = function (o, p) {
if (o instanceof S) return { get() { return p } }
return cachedGOPD(o, p)
}
我不知道Object.getOwnPropertyDescriptor
请求对象属性时是否调用。