1. _[ ` Function.prototype[@@hasInstance]() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/@@hasInstance) _
    2. [ ` Function.prototype.apply() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply)
    3. [ ` Function.prototype.bind() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)
    4. [ ` Function.prototype.call() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call)
    5. [ ` Function.prototype.toString() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/toString)
  6. **Inheritance**
  7. **[ ` Object ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) **
  8. Properties 
    1. [ ` Object.prototype.constructor ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor)
    2. [ ` Object.prototype.__proto__ ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto) Deprecated 
  9. Methods 
    1. [ ` Object.prototype.__defineGetter__() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__) Deprecated 
    2. [ ` Object.prototype.__defineSetter__() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__) Deprecated 
    3. [ ` Object.prototype.__lookupGetter__() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__) Deprecated 
    4. [ ` Object.prototype.__lookupSetter__() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__) Deprecated 
    5. [ ` Object.prototype.hasOwnProperty() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty)
    6. [ ` Object.prototype.isPrototypeOf() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf)
    7. [ ` Object.prototype.propertyIsEnumerable() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable)
    8. [ ` Object.prototype.toLocaleString() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toLocaleString)
    9. [ ` Object.prototype.toString() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString)
    10. [ ` Object.prototype.valueOf() ` ](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf)

##  In this article

  * Syntax 
  * Description 
  * Examples 
  * Specifications 
  * Browser compatibility 
  * See also 

#  Function.prototype[@@hasInstance]()

The **` [@@hasInstance]() ` ** method of [ ` Function ` ](/en-
US/docs/Web/JavaScript/Reference/Global_Objects/Function) instances specifies
the default procedure for determining if a constructor function recognizes an
object as one of the constructor's instances. It is called by the [ `
instanceof ` ](/en-US/docs/Web/JavaScript/Reference/Operators/instanceof)
operator.

##  Syntax

js

    
    
    func[Symbol.hasInstance](value)
    

###  Parameters

` value `

    

The object to test. Primitive values always return ` false ` .

###  Return value

` true ` if ` func.prototype ` is in the prototype chain of ` value ` ;
otherwise, ` false ` . Always returns ` false ` if ` value ` is not an object
or ` this ` is not a function. If ` this ` is a [ bound function ](/en-
US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) , returns the
result of a ` instanceof ` test on ` value ` and the underlying target
function.

###  Exceptions

[ ` TypeError ` ](/en-
US/docs/Web/JavaScript/Reference/Global_Objects/TypeError)

    

Thrown if ` this ` is not a bound function and ` this.prototype ` is not an
object.

##  Description

The [ ` instanceof ` ](/en-
US/docs/Web/JavaScript/Reference/Operators/instanceof) operator calls the [ `
[@@hasInstance]() ` ](/en-
US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance) method of
the right-hand side whenever such a method exists. Because all functions
inherit from ` Function.prototype ` by default, they would all have the `
[@@hasInstance]() ` method, so most of the time, the `
Function.prototype[@@hasInstance] ` metho