function fn(){},fn 为 Function的一个实例,原型链为 null -> Object -> Function -> fn
null -> Object -> Object.prototype ~ Function -> Function.prototype ~ fn -> fn.prototype ~ new fn()
上面面的~表示等价关系,都是同一个类的实例(不同的是 prototype 包含了constructor指针)
比如 Function.prototype.__proto__ === Object.prototype
Object.prototype.constructor = Object
只有函数有prototype, 所有对象都有__proto__ 。函数也是对象,所以函数也有__proto__
__proto__ 指向构造函数的prototype
考察时间,请判断以下比较是否为真:
null === Object.prototype.__proto__;
Object.prototype === Function.prototype.__proto__;
Object.prototype === fn.prototype.__proto__ ;
Function.prototype === fn.prototype;
Object.prototype.isPrototypeOf(fn)
Object.prototype.isPrototypeOf(fn.prototype)
Function.prototype === fn.__proto__;
Function.prototype.isPrototypeOf(fn)
Function.prototype.isPrototypeOf(fn.prototype) // false
答案:以上判断若未特殊说明,结果都为真
PS:对于 const fn = () => {} 这样的箭头函数,不属于原型链的范畴 可以参考 http://www.cnblogs.com/mengff/p/9656486.html
原文:https://www.cnblogs.com/huashiyiqike/p/10542585.html