如何在JavaScript中获取Proxy包装数组的长度?
获取被Proxy包装数组的实际长度
如果直接访问proxy.length拿不到正确的25,多半是Proxy的get拦截逻辑没处理好length属性。试试这些办法:
用
Reflect.get读取原始length
绕过Proxy的自定义拦截,直接获取目标对象的length:const actualLength = Reflect.get(proxyArray, 'length');转成普通数组后取长度
通过Array.from或展开运算符把Proxy数组转成普通数组,再读取length:// Array.from 方式 const actualLength = Array.from(proxyArray).length; // 展开运算符方式 const actualLength = [...proxyArray].length;直接访问原数组(如果有引用的话)
要是你创建Proxy时保留了原数组的引用,直接读原数组的length就行:// 假设创建Proxy时的代码 const target = [/* 元素 */]; const proxy = new Proxy(target, handler); // 直接取原数组长度 const actualLength = target.length;
你提到JSON.stringify返回undefined,这是因为Proxy的拦截逻辑没正确处理序列化相关的属性/方法,上面的方法可以避开这个问题直接拿到长度。
内容的提问来源于stack exchange,提问作者GurdeepSingh29
相关产品推荐
相关产品推荐

