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
						
					
					
						
							922 B
						
					
					
				
			
		
		
	
	
							42 lines
						
					
					
						
							922 B
						
					
					
				'use strict'; | 
						|
 | 
						|
var GetIntrinsic = require('get-intrinsic'); | 
						|
 | 
						|
var $TypeError = GetIntrinsic('%TypeError%'); | 
						|
 | 
						|
var GetV = require('./GetV'); | 
						|
var IsCallable = require('./IsCallable'); | 
						|
var IsPropertyKey = require('./IsPropertyKey'); | 
						|
 | 
						|
/** | 
						|
 * 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod | 
						|
 * 1. Assert: IsPropertyKey(P) is true. | 
						|
 * 2. Let func be GetV(O, P). | 
						|
 * 3. ReturnIfAbrupt(func). | 
						|
 * 4. If func is either undefined or null, return undefined. | 
						|
 * 5. If IsCallable(func) is false, throw a TypeError exception. | 
						|
 * 6. Return func. | 
						|
 */ | 
						|
 | 
						|
module.exports = function GetMethod(O, P) { | 
						|
	// 7.3.9.1 | 
						|
	if (!IsPropertyKey(P)) { | 
						|
		throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); | 
						|
	} | 
						|
 | 
						|
	// 7.3.9.2 | 
						|
	var func = GetV(O, P); | 
						|
 | 
						|
	// 7.3.9.4 | 
						|
	if (func == null) { | 
						|
		return void 0; | 
						|
	} | 
						|
 | 
						|
	// 7.3.9.5 | 
						|
	if (!IsCallable(func)) { | 
						|
		throw new $TypeError(P + 'is not a function'); | 
						|
	} | 
						|
 | 
						|
	// 7.3.9.6 | 
						|
	return func; | 
						|
};
 | 
						|
 |