我试图找到一个很好的解释为什么新的foo()instanceof foo返回false。
function foo() {
return foo;
}
new foo() instanceof foo;
如果函数foo被定义为,则返回true作为预期
function foo(){
return 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