
Function.constructor === Function;
Function.proto === 匿名函数;
Function.prototype === 匿名函数;
说明Function是Function自己的实例对象。
Object.constructor === Function;
Object.proto === Function.prototype;
这么一看,Object就是Function的实例对象。
但是又有,Function.prototype.proto === Object.prototype;的关系 。
另外:[ ] instanceof Function 为什么返回false?
因为,instanceof运算时会递归查找L的原型链,即L.proto.proto.proto.proto...直到找到了或者找到顶层为止,一句话,instanceof原理就是检测左侧的proto原型链上,是否存在右侧的prototype原型,存在则返回true,否则返回false。

[]的原型链上不存在Function的原型,所以[ ] instanceof Function 返回false。
另外可以看出,所有引用类型的原型链上必然存在Object的原型,所以[] instanceof Object返回true
网友评论