【发布时间】:2023-01-26 08:43:25
【问题描述】:
您好我想知道是否有人知道如何在 JavaScript 中从代理的目标值中获取数组。我有这样的事情:
代理人 : [[target]] : Array // 我需要提取的数组 [[处理程序]]:对象 [[IsRevoked]]:错误
【问题讨论】:
-
查看
[[handler]]对象是否公开了任何返回数组的方法。
标签: javascript arrays proxy target
您好我想知道是否有人知道如何在 JavaScript 中从代理的目标值中获取数组。我有这样的事情:
代理人 : [[target]] : Array // 我需要提取的数组 [[处理程序]]:对象 [[IsRevoked]]:错误
【问题讨论】:
[[handler]] 对象是否公开了任何返回数组的方法。
标签: javascript arrays proxy target
如果您只有对代理的引用,那么您无法(默认情况下)获得代理的目标。一个特定的代理可以提供一种方式(可能通过它的一个陷阱处理程序),但默认情况下没有。
【讨论】:
另外,如果处理程序相应地映射所有内容,您可以通过传播获得目标的副本。但是你无法得到原始的[[target]]对象。
const proxy = new Proxy([1, 2, 3], {
get(target, prop, receiver) {
return target[prop];
}
});
console.log([...proxy]);
【讨论】:
get方法中需要格外小心,以确保当...访问Symbol.iterator时,它不会意外覆盖Array.prototype[Symbol.iterator]。 (但我想这就是处理程序相应地映射所有内容的意思?)
只需获取原始对象并将其解析为 JSON 或从 JSON 解析,即可获得一个干净的对象!
item = JSON.parse(JSON.stringify(item))
【讨论】: