首页 > Web开发 > 详细

简单清晰总结js原型与原型链

时间:2019-03-16 17:00:41      阅读:162      评论:0      收藏:0      [点我收藏+]

 

 

 

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

简单清晰总结js原型与原型链

原文:https://www.cnblogs.com/huashiyiqike/p/10542585.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!