我正在尝试实现类似于 HTMLCollection 的东西,它是一个可以在没有 JS 操作的情况下丢失/获得元素的数组。
duk_push_object(ctx);
duk_push_string(ctx, "length");
duk_push_c_function(ctx, my_length_getter, 1);
duk_def_prop(ctx, -3, DUK_DEFPROP_HAVE_GETTER);
duk_push_c_function(ctx, my_item_getter, 1);
duk_put_prop_string(ctx, -2, "item");
像上面那样做,我得到一个对象,我可以在该对象上读取 my_array.length 属性并通过调用方法 my_array.item(index) 获取一个项目。但是我没有通过使用 my_array[index] 得到一个项目。如果我将上面的第一行替换为
duk_push_array(ctx);
我收到一个错误,即长度属性不可配置。有没有可能实现我想要的?具有“惰性”元素绑定的数组?我的印象是 NetSurf 以某种方式设法做到了这一点,但还没有完全弄清楚如何......