这几天我们同学之间讨论了一个面试题,这里来总结一下。
这里是这道面试题:
function f() {
return f;
}
console.log(new f() instanceof f);
首先,它的答案是false。
最开始自己思考的时候,就在想 new f() 和 f 返回的结果都是什么,可以看出,最后返回的都是f函数本身,这个时候就理所当然的认为结果是true了。
但这道题其实是考察instanceof这个api的。这个api就是来判断左边是否是右边的实例,是即返回true,不是即返回false。
如果是一般的函数,不是return函数本身的函数,那么这道题结果就是true了,但是这道题函数返回的是它本身,所以即使是new f(),结果其实是原函数,而不是 f 的实例。
所以,最后的答案是false。