## 消息

    TypeError: invalid 'instanceof' operand "x" (Firefox)
    TypeError: "x" is not a function (Firefox)
    TypeError: Right-hand side of 'instanceof' is not an object (Chrome)
    TypeError: Right-hand side of 'instanceof' is not callable (Chrome)

## 错误类型

`TypeError`

## 哪里出错了？

`instanceof` 操作符 希望右边的操作数为一个构造对象，即一个有 `prototype` 属性且可以调用的对象。

## 例子

    "test" instanceof ""; // TypeError: invalid 'instanceof' operand ""
    42 instanceof 0;      // TypeError: invalid 'instanceof' operand 0

    function Foo() {}
    var f = Foo();        // Foo() is called and returns undefined
    var x = new Foo();

    x instanceof f;       // TypeError: invalid 'instanceof' operand f
    x instanceof x;       // TypeError: x is not a function

为了解决上述问题， 你可能需要将`instanceof` 操作符 换成 `typeof` 操作符， 或者确保你使用的是函数名称，而不是函数计算的结果。

    typeof "test" == "string"; // true
    typeof 42 == "number"      // true

    function Foo() {}
    var f = Foo;               // Do not call Foo.
    var x = new Foo();

    x instanceof f;            // true
    x instanceof Foo;          // true

## 参见

- `instanceof` 操作符
- `typeof` 操作符