繁体   English   中英

对象Javascript的数组访问

[英]Array Access of Object Javascript

在咖啡脚本中,我有这个小代码片段。

class Collection

  construct:(@collection=[])

现在我想访问该对象,就像它是一个数组,但我想在我这样做时获取集合变量。 在其他语言中,我将实现某种类型的ArrayAccess并编写下一个当前等方法

obj= new Collection([1,2,3])

obj[0] # this should equal 1 

我怎么能在javascript或coffeescript中做到这一点

这不可能。 你需要某种代理 没有“ArrayAccess”声明功能,因为括号表示法只是对Collection实例的属性访问(如obj["collection"] )。

相反,你可以:

  • 实现一个getter函数,比如

     class Collection construct:(@collection=[]) at: (i) -> @collection[i] obj.at 0 # 1 
  • 使用Collection对象本身作为元素的持有者(例如jQuery就是这样)。 但是,您放弃了本机阵列功能。 您甚至可能在某种程度上将Array子类化.length不会自动更新)。

     class Collection constructor: (col = []) -> @length = 0 for el in col Array::push.call(@, el) obj[0] # 1 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM