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.
		
		
		
		
		
			
		
			
				
					45 lines
				
				1.7 KiB
			
		
		
			
		
	
	
					45 lines
				
				1.7 KiB
			| 
											3 years ago
										 | define(['exports', './_getLength', './isFunction', './allKeys'], function (exports, _getLength, isFunction, allKeys) { | ||
|  | 
 | ||
|  |   // Since the regular `Object.prototype.toString` type tests don't work for
 | ||
|  |   // some types in IE 11, we use a fingerprinting heuristic instead, based
 | ||
|  |   // on the methods. It's not great, but it's the best we got.
 | ||
|  |   // The fingerprint method lists are defined below.
 | ||
|  |   function ie11fingerprint(methods) { | ||
|  |     var length = _getLength(methods); | ||
|  |     return function(obj) { | ||
|  |       if (obj == null) return false; | ||
|  |       // `Map`, `WeakMap` and `Set` have no enumerable keys.
 | ||
|  |       var keys = allKeys(obj); | ||
|  |       if (_getLength(keys)) return false; | ||
|  |       for (var i = 0; i < length; i++) { | ||
|  |         if (!isFunction(obj[methods[i]])) return false; | ||
|  |       } | ||
|  |       // If we are testing against `WeakMap`, we need to ensure that
 | ||
|  |       // `obj` doesn't have a `forEach` method in order to distinguish
 | ||
|  |       // it from a regular `Map`.
 | ||
|  |       return methods !== weakMapMethods || !isFunction(obj[forEachName]); | ||
|  |     }; | ||
|  |   } | ||
|  | 
 | ||
|  |   // In the interest of compact minification, we write
 | ||
|  |   // each string in the fingerprints only once.
 | ||
|  |   var forEachName = 'forEach', | ||
|  |       hasName = 'has', | ||
|  |       commonInit = ['clear', 'delete'], | ||
|  |       mapTail = ['get', hasName, 'set']; | ||
|  | 
 | ||
|  |   // `Map`, `WeakMap` and `Set` each have slightly different
 | ||
|  |   // combinations of the above sublists.
 | ||
|  |   var mapMethods = commonInit.concat(forEachName, mapTail), | ||
|  |       weakMapMethods = commonInit.concat(mapTail), | ||
|  |       setMethods = ['add'].concat(commonInit, forEachName, hasName); | ||
|  | 
 | ||
|  |   exports.ie11fingerprint = ie11fingerprint; | ||
|  |   exports.mapMethods = mapMethods; | ||
|  |   exports.setMethods = setMethods; | ||
|  |   exports.weakMapMethods = weakMapMethods; | ||
|  | 
 | ||
|  |   Object.defineProperty(exports, '__esModule', { value: true }); | ||
|  | 
 | ||
|  | }); |