123456789101112131415161718192021222324252627282930313233343536 |
- // 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, props, desc;
- if (!shim) return create;
- if (shim.level !== 1) return create;
- nullObject = {};
- props = {};
- desc = { configurable: false, enumerable: false, writable: true,
- value: undefined };
- Object.getOwnPropertyNames(Object.prototype).forEach(function (name) {
- if (name === '__proto__') {
- props[name] = { configurable: true, enumerable: false, writable: true,
- value: undefined };
- return;
- }
- props[name] = desc;
- });
- Object.defineProperties(nullObject, props);
- Object.defineProperty(shim, 'nullPolyfill', { configurable: false,
- enumerable: false, writable: false, value: nullObject });
- return function (prototype, props) {
- return create((prototype === null) ? nullObject : prototype, props);
- };
- }());
|