Blame view

node_modules/es5-ext/object/create.js 1004 Bytes
f7563de62   Palak Handa   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
  // 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);
  	};
  }());