我尝试在 Javascript 中实现这一点:
var a = new MyObj();
console.log(a.Foo()); // Print Foo
console.log(a["Bar"]()); // Print Bar
基本上,我事先不知道所需的属性/成员名称,但取决于我返回它的调用,有点类似于 C# ExpandoObject
(动态)。
是否可以用 Javascript 制作这样的对象?
注意:我知道可以添加属性,但是,就我而言,我事先不知道需要添加哪些属性。
a.Foo = () => { return "Foo"; }
这是不可能的,因为我不知道需要 Foo
。
最佳答案
你可以使用 Proxy
并通过返回一个函数来实现一个 getter,该函数是对键的闭包。
var a = new Proxy({ baz: 42 }, {
get: function (target, prop, receiver) {
return prop in target
? () => target[prop]
: () => prop;
}
});
console.log(a.Foo()); // Foo
console.log(a["Bar"]()); // Bar
console.log(a.baz()); // 42
关于javascript - 在 Javascript 中是否可以创建具有动态(未确定)属性/成员的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50797402/