OrdinaryHasInstance.js 567 B

123456789101112131415161718192021222324
  1. 'use strict';
  2. var $TypeError = require('es-errors/type');
  3. var Get = require('./Get');
  4. var IsCallable = require('./IsCallable');
  5. var isObject = require('../helpers/isObject');
  6. // https://262.ecma-international.org/6.0/#sec-ordinaryhasinstance
  7. module.exports = function OrdinaryHasInstance(C, O) {
  8. if (!IsCallable(C)) {
  9. return false;
  10. }
  11. if (!isObject(O)) {
  12. return false;
  13. }
  14. var P = Get(C, 'prototype');
  15. if (!isObject(P)) {
  16. throw new $TypeError('OrdinaryHasInstance called on an object with an invalid prototype property.');
  17. }
  18. return O instanceof C;
  19. };