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.
		
		
		
		
		
			
		
			
				
					
					
						
							27 lines
						
					
					
						
							894 B
						
					
					
				
			
		
		
	
	
							27 lines
						
					
					
						
							894 B
						
					
					
				var DESCRIPTORS = require('../internals/descriptors'); | 
						|
var fails = require('../internals/fails'); | 
						|
var has = require('../internals/has'); | 
						|
 | 
						|
var defineProperty = Object.defineProperty; | 
						|
var cache = {}; | 
						|
 | 
						|
var thrower = function (it) { throw it; }; | 
						|
 | 
						|
module.exports = function (METHOD_NAME, options) { | 
						|
  if (has(cache, METHOD_NAME)) return cache[METHOD_NAME]; | 
						|
  if (!options) options = {}; | 
						|
  var method = [][METHOD_NAME]; | 
						|
  var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false; | 
						|
  var argument0 = has(options, 0) ? options[0] : thrower; | 
						|
  var argument1 = has(options, 1) ? options[1] : undefined; | 
						|
 | 
						|
  return cache[METHOD_NAME] = !!method && !fails(function () { | 
						|
    if (ACCESSORS && !DESCRIPTORS) return true; | 
						|
    var O = { length: -1 }; | 
						|
 | 
						|
    if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower }); | 
						|
    else O[1] = 1; | 
						|
 | 
						|
    method.call(O, argument0, argument1); | 
						|
  }); | 
						|
};
 | 
						|
 |