javascript - 在 Javascript 中是否可以创建具有动态(未确定)属性/成员的对象?

标签 javascript object dynamic

我尝试在 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/

相关文章:

javascript - 调整 flipclock.js 的大小未按预期调整

javascript - 使用名称属性的动态指令 Controller

java - 将对象[][] 转换为字符串? Java Swing

java - 将对象从已实现的类添加到数组

javascript - 在 HTML Canvas 中重绘对象时出现问题

listview - 动态在可折叠/分隔符内创建 ListView

javascript - KnockoutJS + Chosen 在我设置后重置我的可观察值

php - 从输入框中单击后立即删除值 ="Comment?"

java - 动态链接 : Class not visible to ClassLoader, 但我已经尝试过每一个?

iphone - Objective C用字符串动态调用方法