我需要创建一个Javascript对象,它可以作为关联数组,但在获取和设置属性之前调用一些函数。
例如,任务可能是这样的:我们应该创建一个对象,它包含一个键的平方值,如下所示:
obj.two should be equal to 4,
obj.four should be equal to 16,
obj['twenty one'] should be equal to 441.
这是一个例子。实际上我也需要覆盖设置操作。获取和设置操作将转到数据库,它们不一定将字符串作为键,而是将任何类型的对象作为键,从中创建数据库查询。
我将如何做到这一点 a) 使用尽可能少的第三方库和 b) 使其在尽可能多的平台上工作?
我是 JS 新手,我发现 JS 没有关联数组,依赖于动态定义具有任意属性的对象的能力。我用谷歌搜索并有一个想法来使用甚至覆盖lookupgetter(和setter),在其中动态定义一个新的getter/setter,但我找不到解释器是否会在每次遇到新键时都使用这个方法。无论如何,看起来除了字符串或数字作为键之外,我无法使用任何东西。
在 Java 中,我只需实现 java.util.Map。
请帮助我,我将如何在 Javascript 中做同样的事情?
编辑
我想如果我设法覆盖这里提到的方法[[Get]]
和方法,我会得到我想要的http://interglacial.com/javascript_spec/a-8.html#a-8.6.2.1[[Put]]