gpt4 book ai didi

php - Javascript 中的对象可以像 PHP 中的 ArrayAccess/ArrayObject 一样运行吗?

转载 作者:行者123 更新时间:2023-11-30 05:48:40 24 4
gpt4 key购买 nike

在PHP中,一个类可以实现ArrayAccess接口(interface),所以类可以像这样被实例化和访问:

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]

最佳答案

答案是肯定的,但不是在任何旨在供公众使用的应用程序中。

ECMAScript 5 支持“get”和“set”声明(在已知属性上),并且在未来的修订版中将支持代理(可以监听对象的任何更改),但是如果您的应用程序要支持 IE 任何东西,或用户不选择下载开发者浏览器并启用开发者开关的任何设备,你将不得不在几年内将大量用户留在后面(考虑智能手机的契约(Contract)期限,以及移动浏览器仍然不存在),或者在 try-catch 子句中实现旧版本并测试兼容性,因为否则使用这些功能可能会导致硬异常,或者根本无法工作,具体取决于。

因此,是的,但无论如何您都必须以旧方式进行。

关于php - Javascript 中的对象可以像 PHP 中的 ArrayAccess/ArrayObject 一样运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16204855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com