后端转前端之原型链

我认为后端转前端的难点有这么几个,CSS样式,闭包,原型链.
这是我目前看过来对于后端童鞋比如说我,基本没有概念和使用经历的地方.昨天前天基本上研究了2天原型链,终于弄懂大概是什么样子了.这次博客我就概括总结一下原型链.当然我现在只是知其然,不知其所以然.大家如果对于prototype,__proto__是什么还不太清楚的同学,我这里就不多赘述了,以防误人子弟.大家自行去网上看看原型链究竟是啥吧.
首先我概括了这么几条规律结合下面的代码有脉络的梳理一下

function Foo(){ } 
var foo = new Foo(); 
var obj = new Object();

以这三行代码为例画一个原型链.
原型链是一条链,将节点通过线来连起来.所以我们得明确有几个节点.foo,obj是对象实例,Foo Object是函数,Foo.prototype,Object.prototype是函数原型,还有一个隐藏的节点Function和Function.prototype.
Function就是创建Foo函数,Object函数的Function函数,所以如果要讲此前的6个节点串联起来,还需要Function和Function.prototype来作为中转.
所以现在是这样的
节点
OK,这是我们的8个节点,那么现在开始把他们串起来.
首先函数和函数原型之间的联系其一我们一眼就能看出来.
在这里插入图片描述
其二则是Object.prototype通过constructor指向的就是Object.
在这里插入图片描述
同理,Function.prototype和Function,Foo.prototype和Foo之间的联系就可以补全了.
在这里插入图片描述
下面是我从王福鹏老师的博客中抄的一句话
每个对象都有一个__proto__属性,指向创建该对象的函数的prototype。
ok,那我们据此可以知道obj和Object.prototype之间是存在一条线的.
在这里插入图片描述
那么问题来了,Object函数,Foo函数也是对象,Object函数,Foo函数是由谁创造的?Function函数.
每个对象都有一个__proto__属性,指向创建该对象的函数的prototype。
我们再思考一下,现在这句话是不是就应该这么说了?
Object函数的__proto__属性,指向Function函数的prototype.
OK,那我们将这条线补上
Function函数的__proto__属性,跟上面2个函数一样,也是指向的Function函数的prototype.OK,那我们补上关系.
在这里插入图片描述
刚才讨论完函数是对象,那么现在要讨论的是Foo.prototype,Function.prototype也是对象,那他们的__proto__属性指向哪里呢?还是这句话
每个对象都有一个__proto__属性,指向创建该对象的函数的prototype。
他们其实是跟obj对象一样,都是被Object函数创建的.
ok,那我们把关系补上
不对,先别急, Object.prototype指向哪?
它指向null,那我们再加上这个关系,就大功告成了.
在这里插入图片描述
那么至此,原型链就画完了.虽然有点丑,但是我背原型链的思路就是这么来的.
那么总结一下对象是点,对象之间的大连接方式是__proto__,小连接方式是prototype和constructor.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值