123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // Workaround for http://code.google.com/p/v8/issues/detail?id=2804
- "use strict";
- 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);
- };
- }());
|