在 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()
时会返回一个对象(?),就像Object [div.id1]
在 firebug 控制台中一样