可以在javascript中创建属性吗?

可以在javascript中创建属性吗?,javascript,arrays,properties,overloading,Javascript,Arrays,Properties,Overloading,我想创建一个自定义的数组对象,它接收一个作为索引的数字,并根据索引的值返回一个计算值 例如: >>> var MyArray(2); >>> MyArray[2]; 4 >>> MyArray.2; 4 我知道对于所展示的示例,我更擅长使用函数,但我想知道我是否可以覆盖一些概念上是数组但可能需要一些计算的内容的属性/索引查找 我知道x.1==x[1],所以我需要在javascript中创建一个属性 我的意思是,使x.variable=x.m

我想创建一个自定义的
数组
对象,它接收一个作为索引的数字,并根据索引的值返回一个计算值

例如:

>>> var MyArray(2);
>>> MyArray[2];
4
>>> MyArray.2;
4
我知道对于所展示的示例,我更擅长使用函数,但我想知道我是否可以覆盖一些概念上是数组但可能需要一些计算的内容的属性/索引查找

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

我的意思是,使
x.variable=x.myPropery()
,所以每次我得到
x.variable
的值时,我都会收到
x.myPorperty()的返回值


这是可能的吗?

变量[property]与点表示法相同,因此您正在执行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') };"
目前仅在

  • 火狐
  • 狩猎3+
  • 歌剧9.5+

Internet Explorer(在任何it版本中)都缺乏这方面的功能。

我知道
x[1]==x.1
。有没有办法使
x.i==x.myProperty()
?我在文章中已经提到了这一点,记住,你可以声明和传递函数,你可以调用它们并得到它们的结果,但是你不能调用没有()的函数。我想我没有正确地解释自己。我知道可以设置函数,但是可以使用Python的.NET这样的属性来代替Java的getter和setter吗?您想要一个C风格的getter,比如:int MyProperty get{return computed_value;}?如果是的话,不,你不能那样做