Javascript instanceof运算符函数返回自身

时间:2018-06-03 17:20:18

标签: javascript

我试图找到一个很好的解释为什么新的foo()instanceof foo返回false。

function foo() {
  return foo;
}
new foo() instanceof foo;

如果函数foo被定义为,则返回true作为预期

function foo(){
  return 1;
}

1 个答案:

答案 0 :(得分:1)

后者并没有真正返回1,因为构造函数是not allowed to return value types。返回值将被忽略,您获得的是新的foo(而不是1),当然其类型为foo

另一方面,前者返回一个类型为Function的函数本身。



function foo() {
  return foo;
}

console.log( new foo() instanceof Function );
// true

function bar() {
   return 1;
}

console.log( new bar() );
// prints {} as new bar() returns an empty object of bar proto