Spaces:
Runtime error
Runtime error
// Workaround for http://code.google.com/p/v8/issues/detail?id=2804 | |
; | |
var create = Object.create, shim; | |
if (!require("./set-prototype-of/is-implemented")()) { | |
shim = require("./set-prototype-of/shim"); | |
} | |
module.exports = (function () { | |
var nullObject, polyProps, desc; | |
if (!shim) return create; | |
if (shim.level !== 1) return create; | |
nullObject = {}; | |
polyProps = {}; | |
desc = { configurable: false, enumerable: false, writable: true, value: undefined }; | |
Object.getOwnPropertyNames(Object.prototype).forEach(function (name) { | |
if (name === "__proto__") { | |
polyProps[name] = { | |
configurable: true, | |
enumerable: false, | |
writable: true, | |
value: undefined | |
}; | |
return; | |
} | |
polyProps[name] = desc; | |
}); | |
Object.defineProperties(nullObject, polyProps); | |
Object.defineProperty(shim, "nullPolyfill", { | |
configurable: false, | |
enumerable: false, | |
writable: false, | |
value: nullObject | |
}); | |
return function (prototype, props) { | |
return create(prototype === null ? nullObject : prototype, props); | |
}; | |
})(); | |