Show More
Commit Description:
submission report
Commit Description:
submission report
References:
File last commit:
Show/Diff file:
Action:
node_modules/es-abstract/2015/GetMethod.js
| 42 lines
| 924 B
| application/javascript
| JavascriptLexer
|
r789 | 'use strict'; | |||
var GetIntrinsic = require('../GetIntrinsic'); | ||||
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; | ||||
}; | ||||