【发布时间】:2013-04-18 18:19:28
【问题描述】:
在 PHP 中,一个类可以实现 ArrayAccess 接口,所以可以像这样实例化和访问该类:
class MyClass implements ArrayAccess {
protected $data = array();
public function offsetGet($offset) {
return isset($this->data[$offset]) ? $data[$offset] : null;
}
public function offsetSet($offset, $value) {
$this->data[$offset] = $value;
}
public function __toString()
{
return print_r($this->data);
}
}
$a = new MyClass;
$a['item'] = 10;
$a['item2'] = 'adsf';
echo $a;
// Outputs Array( 'item' => 10, 'item2' => 'adsf' )
在 Javascript 中有这样的东西吗?我希望能够在 Javascript 中创建一个迭代器类,但是可以通过使用括号符号而不是使用 get('item')/set('item2', 'asdf') 来访问这些项目,因此它可以像一个数组而不是一个对象,但仍然拥有所有我的构造函数中的函数(next、prev、is、reset 等)
我问这个是因为 AngularJS 在使用 angular.element() 时,会在 firebug 控制台中返回一个对象 (?),例如 Object [div.id1]
【问题讨论】:
-
所以你想要一个“数组”,可以通过键访问(如对象文字),仍然有数组方法? next、prev、is、reset 等是什么?
-
是的。接下来,prev,是,reset 是类迭代器函数,我已经添加了一些信息,为什么我在问题的底部要求这个
-
那么你已经有一个 Javascript 类了吗?如果是的话,你能展示一下吗?
标签: php javascript