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');
    }
})();