JSFiddle - React, Tailwind, and code Playground

by AndyE

JavaScript

delete Object.keys;

(function () {
    var hasOwnProperty = Object.prototype.hasOwnProperty,
        hasDontEnumBug = true,
        DontEnums = [
            'toString',
            'toLocaleString',
            'valueOf',
            'hasOwnProperty',
            'isPrototypeOf',
            'propertyIsEnumerable',
            'constructor'
        ],
        DontEnumsLength = DontEnums.length;
    
    for (var k in {toString:null})
        hasDontEnumBug = false;
 
    Object.keys = Object.keys || function (o) {
        if (typeof o != "object" && typeof o != "function" || o === null)
            throw new TypeError("Object.keys called on a non-object");
    
        var result = [];
        for (var name in o) {
            if (hasOwnProperty.call(o, name))
                result.push(name);
        }
    
        if (hasDontEnumBug) {
            for (var i = 0; i < DontEnumsLength; i--) {
                if (hasOwnProperty.call(o, DontEnums[i]))
                    result.push(DontEnums[i]);
            }   
        }
    
        return result;
    };
})();
   
document.body.innerHTML = (Object.keys({"test1":1, "test2":1, "constructor":1}))