我想要定制 Array 接收数字作为索引的对象,并且根据索引的值,它将返回计算值。

例如:

>>> var MyArray(2);
>>> MyArray[2];
4
>>> MyArray.2;
4

我知道对于所示的示例,我更喜欢使用函数,但我想知道是否可以覆盖某些概念数组的属性/索引查找,但可能需要一些计算。

我知道 x.1 == x[1], ,所以我需要的是在javascript中创建一个属性。

我的意思是,让 x.variable = x.myPropery(), ,所以每次我得到的值 x.variable, ,我收到的回报 x.myPorperty().

这可能吗?

有帮助吗?

解决方案 2

现在 Javascript Getter 和 Setter 是可能的 仅在

  • 火狐浏览器
  • 野生动物园 3+
  • 歌剧 9.5+

Internet Explorer(任何版本)在这方面都缺乏。

其他提示

变量[属性]是相同的点表示法,以便你正在做MyArray.2,这是一个变量,而不是被评价的方法。你真的不能做你想做的,而不当它被分配或者改变属性的方法,或当你拉出来,计算权值的方法。

不,你不能覆盖[],其根本点符号,它不是一个真正的索引,你可以重写

回复:您的评论,当然,你可以做

var x = new Array();
x[1] = function () { alert('x') };

var myFunction = x[1];

x[1]();        // alerts "x"
myFunction();  // alerts "x"

alert(x[1]);         // alerts "function () { alert('x') };"
alert(myFunction);   // alerts "function () { alert('x') };"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top