feat: 实现 Array.from 与 Array.of 静态方法

- Array.from:可迭代(迭代协议)与 array-like 双路径,支持 mapFn/thisArg,
  构造器 this 支持(new C),CreateDataPropertyOrThrow 写入,IteratorClose
- Array.of:以参数为元素,this 构造器 + CreateDataProperty + Set length
- iterator.rs:get_iterator 改为 Option 返回,新增 try_make_iterator 与
  peek_iterator_method(GetMethod 只读判定,不调用迭代器)
This commit is contained in:
爱特每羊队
2026-08-08 13:13:08 +08:00
parent a814dd0700
commit 6e5bbe718b
4 changed files with 389 additions and 9 deletions
@@ -11,6 +11,8 @@ use crate::bindings::apply_binding_table;
pub fn bind_array(core: &Arc<KernelCore>, session: &KernelSession, global: &mut JsObject) {
let _array_methods = ArrayMethods {
is_array: oxide_builtins::array::array_is_array::<crate::vm::Vm> as *const (),
from: oxide_builtins::array::array_from::<crate::vm::Vm> as *const (),
of: oxide_builtins::array::array_of::<crate::vm::Vm> as *const (),
push: oxide_builtins::array::array_push::<crate::vm::Vm> as *const (),
pop: oxide_builtins::array::array_pop::<crate::vm::Vm> as *const (),
slice: oxide_builtins::array::array_slice::<crate::vm::Vm> as *const (),