[英]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.