const originObjects=[]; //建一个数组储存原始对象
const proxy = window.Proxy;
window.Proxy = function () {
let app = arguments[0]._
if (app?.uid === 30) {
originObjects.push(arguments[0]) //暴露Proxy的原始对象
console.log("target",originObjects)
console.log("app.attrs", app.attrs);
let videoinfo = app.attrs.videoinfo;
console.log("videoinfo", videoinfo);
console.log("videoinfo", JSON.parse(JSON.stringify(videoinfo)));
}
return new proxy(...arguments);
};
建议阅读一下MDN文档
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy
语法
const p = new Proxy(target, handler)
参数
target
要使用 Proxy 包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。
handler
一个通常以函数作为属性的对象,各属性中的函数分别定义了在执行各种操作时代理 p 的行为。
Proxy劫持里,arguments[0]
实际上就是原始对象,原始对象只能在劫持过程中暴露出来,劫持完成后是获取不到的
随便加一行把arguments[0]
暴露出来就行 比如originObjects.push(arguments[0])