JSFiddle - React, Tailwind, and code Playground
JavaScript
self.Math = new Proxy(Math, {
get(obj, key) {
return obj[key];
}
});
(function() {
var max = 0;
var cur = 0;
var obj;
function getStack() {
max++;
return getStack();
}
function check() {
if (cur > max - 10) {
obj.aaa; // 检测 get()
// obj.aaa = 1; // 检测 set()
}
cur++;
return check();
}
console.time('s');
try {
getStack();
} catch (err) {
}
// 检测 obj 是否为 Proxy
obj = Math;
try {
check();
} catch (err) {
}
console.timeEnd('s');
if (cur === max) {
console.log('not proxy');
} else {
console.log('is proxy');
}
})();