博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript 原型链
阅读量:6374 次
发布时间:2019-06-23

本文共 779 字,大约阅读时间需要 2 分钟。

先来一张图看看几个名词的关系 构造函数、原型、实例

徒手实现原型链

原谅我的狂草字体,我手写比用电脑画快。

今天我们只说原型链,所以接下来我就围绕着原型链的几个部分说起。

这个大家都很熟悉了,首字母大写的函数我们都可以作为构造函数,不是说小写的就不能new,也是可以的,暂时说成约定俗成吧!

// 构造函数        function Fn() {}        //原型对象        console.log(Fn.prototype)          //new        let fn = new Fn()         //实例        console.log(fn)

代码部分结束了,今天我们就用这4行代码描述一下上图也就是原型链的来龙去脉。

每个函数都有一个属性prototype,借用**Function.prototype** 属性存储了  的原型对象。

原型对象

验证了我草图构造函数.prototype指向原型对象

完整的log看一下

完整log
实例.__proto__也指向原型对象

从log里也能看出来

constructor指向构造函数

实例原型的constructor指向构造函数

最后再说构造函数 new关键字生成实例

手绘图说完了,我们说正题 原型链,为什么再说原型链之前先画了一个草图,为了帮助预热理解。

每一个原型对象都有一个__proto__属性,这个是我们在代码中继承的关键,也是众多面试官所问的什么是原型链

__proto__

上图可以看到,第一次__proto__找到了原型对象,第二次__proto__找到了Object实例对象,第三次null查找结束。

我们平时开发中用到了__proto__去查找链条中我们继承的方法和属性都在prototype(原型)上,所以不能在Fn.prototype = xxx操作,这样链条就会中断,只能在原型上扩展属性。

明天继续聊继承!

欢迎吐槽!

转载地址:http://aynqa.baihongyu.com/

你可能感兴趣的文章
4 在vCenter Server安装View Composer组件
查看>>
分析当下的社会化工具:真心不挣钱
查看>>
SFB 项目经验-24-为持久聊天室-查询或者增加成员
查看>>
Linux下配置Squid基础教程
查看>>
当Cacti遭遇大流量
查看>>
Outlook Anywhere 客户端配置详解
查看>>
来,测一下你的学习能力!
查看>>
《Windows Server 2008 R2系统管理实战》前言与内容提要
查看>>
轻巧的网络流量实时监控工具NTOPNG
查看>>
MySQL的log_bin和sql_log_bin 到底有什么区别?
查看>>
Access、Sql 获取当前插入的主键ID
查看>>
聚类算法之DBScan(Java实现)
查看>>
为什么要使用AOP?
查看>>
iis7.0修改网站端口
查看>>
Vista下串口问题
查看>>
SYS_单据序列Sequence产生方式(案例)
查看>>
android2.2源码初探
查看>>
AMD OpenCL大学课程(11)
查看>>
Android杂谈--网络状态判断
查看>>
textpattern 在 nginx 上的 rewrite 规则
查看>>