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.
		
		
		
		
		
			
		
			
				
					39 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					39 lines
				
				1.3 KiB
			| 
											3 years ago
										 | 'use strict'; | ||
|  | // 19.1.2.1 Object.assign(target, source, ...)
 | ||
|  | var DESCRIPTORS = require('./_descriptors'); | ||
|  | var getKeys = require('./_object-keys'); | ||
|  | var gOPS = require('./_object-gops'); | ||
|  | var pIE = require('./_object-pie'); | ||
|  | var toObject = require('./_to-object'); | ||
|  | var IObject = require('./_iobject'); | ||
|  | var $assign = Object.assign; | ||
|  | 
 | ||
|  | // should work with symbols and should have deterministic property order (V8 bug)
 | ||
|  | module.exports = !$assign || require('./_fails')(function () { | ||
|  |   var A = {}; | ||
|  |   var B = {}; | ||
|  |   // eslint-disable-next-line no-undef
 | ||
|  |   var S = Symbol(); | ||
|  |   var K = 'abcdefghijklmnopqrst'; | ||
|  |   A[S] = 7; | ||
|  |   K.split('').forEach(function (k) { B[k] = k; }); | ||
|  |   return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; | ||
|  | }) ? function assign(target, source) { // eslint-disable-line no-unused-vars
 | ||
|  |   var T = toObject(target); | ||
|  |   var aLen = arguments.length; | ||
|  |   var index = 1; | ||
|  |   var getSymbols = gOPS.f; | ||
|  |   var isEnum = pIE.f; | ||
|  |   while (aLen > index) { | ||
|  |     var S = IObject(arguments[index++]); | ||
|  |     var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S); | ||
|  |     var length = keys.length; | ||
|  |     var j = 0; | ||
|  |     var key; | ||
|  |     while (length > j) { | ||
|  |       key = keys[j++]; | ||
|  |       if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key]; | ||
|  |     } | ||
|  |   } return T; | ||
|  | } : $assign; |