如何理解javascript中Object和Function的关系?

如何理解javascript中Object和Function的关系?原型链能解释清楚下面两个语句的逻辑吗?

Object instanceof Function  //true
Function instanceof Object  //true

阅读 3.1k
5 个回答

一切皆对象,Object本来也是类呀,类也是函数

曾经探索过,写了篇文章(质量不太高。。),现在忘得差不多了,有兴趣可以看看。

一个关于原型链的探索

附上文章中的一张图:

各种对象在原型链中位置

1、首先, 继承的主体其实是构造函数的原型
2、然后

instanceof运算符用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置--来自MDN

也就是只要某个构造函数的prototype也就是原型在原型链中出现过,instanceof就会返回true;
3、不论是 Object 还是 Function 或者 Array ,本质上他们都是构造函数,所以他们继承自 Function.prototype,也就是Function.prototype出现在原型链中,因此
Function instanceof Function // true
Object instanceof Function // true
4、我们顺着原型链继续找,Function.prototype本质上也是一个对象,它继承自Object.prototype,也就是Object.prototype也出现在原型链中,因此
Function instanceof Object // true
Object instanceof Object // true

推荐问题
宣传栏