You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							42 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							42 lines
						
					
					
						
							1.5 KiB
						
					
					
				| // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
 | |
| var anObject = require('./_an-object');
 | |
| var dPs = require('./_object-dps');
 | |
| var enumBugKeys = require('./_enum-bug-keys');
 | |
| var IE_PROTO = require('./_shared-key')('IE_PROTO');
 | |
| var Empty = function () { /* empty */ };
 | |
| var PROTOTYPE = 'prototype';
 | |
| 
 | |
| // Create object with fake `null` prototype: use iframe Object with cleared prototype
 | |
| var createDict = function () {
 | |
|   // Thrash, waste and sodomy: IE GC bug
 | |
|   var iframe = require('./_dom-create')('iframe');
 | |
|   var i = enumBugKeys.length;
 | |
|   var lt = '<';
 | |
|   var gt = '>';
 | |
|   var iframeDocument;
 | |
|   iframe.style.display = 'none';
 | |
|   require('./_html').appendChild(iframe);
 | |
|   iframe.src = 'javascript:'; // eslint-disable-line no-script-url
 | |
|   // createDict = iframe.contentWindow.Object;
 | |
|   // html.removeChild(iframe);
 | |
|   iframeDocument = iframe.contentWindow.document;
 | |
|   iframeDocument.open();
 | |
|   iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
 | |
|   iframeDocument.close();
 | |
|   createDict = iframeDocument.F;
 | |
|   while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
 | |
|   return createDict();
 | |
| };
 | |
| 
 | |
| module.exports = Object.create || function create(O, Properties) {
 | |
|   var result;
 | |
|   if (O !== null) {
 | |
|     Empty[PROTOTYPE] = anObject(O);
 | |
|     result = new Empty();
 | |
|     Empty[PROTOTYPE] = null;
 | |
|     // add "__proto__" for Object.getPrototypeOf polyfill
 | |
|     result[IE_PROTO] = O;
 | |
|   } else result = createDict();
 | |
|   return Properties === undefined ? result : dPs(result, Properties);
 | |
| };
 |