深入理解javascript prototype的相关知识


Posted in Javascript onSeptember 19, 2019

如图比较好的阐述了prototype和__proto__

简单的可以这么理解:

狗类A( function foo()),狗类A的模板描述:A.模板 (foo.prototype)是一个对象object, A.模板有个构造方法

foo.prototype.constructor=function foo()

动物B(function function()), 动物B的模板描述 . B.模板 (function.prototype), B.模板有个构造方法

function.prototype.constructor=function function()

狗C= new 狗类A (f1=new foo())

那么狗c的父类模板=A.模板 即 f1.__proto__= foo.prototype.

狗类A的父类模板=B.模板 即 foo.__proto__=function.prototype

只有函数有prototype,对象是没有的。

但是函数也是有__proto__的,因为函数也是对象。函数的__proto__指向的是Function.prototype。

也就是说普通函数是Function这个构造函数的一个实例。

__proto__可以理解为指向父类模板的一个引用。用来查找父类模板的

prototype可以理解为对象的一个属性,用来描述自身如果作为模板是如何定义的,该模板有方法和属性。

function foo() 自身如果作为模板prototype,它自身会有构建函数,模板的属性constructor就是描述这个构建函数。

foo()这个对象实际上是隐含从父类模板继承过来的,这个父类模板就是function function()的模板属性。即它的prototype.

深入理解javascript prototype的相关知识

设计者定义的时候名称比较混淆不利于理解。这是javascript的败笔。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 学习 - 提高篇
Feb 02 Javascript
innerText和innerHTML 一些问题分析
May 18 Javascript
实现JavaScript中继承的三种方式
Oct 16 Javascript
jQuery 源码分析笔记(4) Ready函数
Jun 02 Javascript
JavaScript 获取任一float型小数点后两位的小数
Jun 30 Javascript
浅谈js多维数组和hash数组定义和使用
Jul 27 Javascript
jquery滚动条插件(可以自定义)
Dec 11 Javascript
vue-cli如何添加less 以及sass
Jul 06 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
May 03 Javascript
[原创]jquery判断元素内容是否为空的方法
May 04 jQuery
layer页面跳转,获取html子节点元素的值方法
Sep 27 Javascript
解决vue+elementui项目打包后样式变化问题
Aug 03 Javascript
基于Vue的商品主图放大镜方案详解
Sep 19 #Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
Sep 19 #Javascript
微信小程序错误this.setData报错及解决过程
Sep 18 #Javascript
解决layui富文本编辑器图片上传无法回显的问题
Sep 18 #Javascript
layui 富文本赋值,取值,取纯文本值的实例
Sep 18 #Javascript
layui 富文本编辑器和textarea值的相互传递方法
Sep 18 #Javascript
微信小程序获取地理位置及经纬度授权代码实例
Sep 18 #Javascript
You might like
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
2012/10/03 PHP
PHP可变变量学习小结
2015/11/29 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
2016/05/17 Javascript
jQuery事件对象总结
2016/10/17 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
用python实现批量重命名文件的代码
2012/05/25 Python
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
CSS实现半透明边框与多重边框的场景分析
2019/11/13 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
孕妇装中的著名品牌:Isabella Oliver(伊莎贝拉·奥利弗)
2016/10/31 全球购物
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
北大青鸟学生求职信
2013/09/24 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
触电现场处置方案
2014/05/14 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
拾金不昧感谢信
2015/01/21 职场文书
师范生见习自我总结
2015/06/23 职场文书
《秦兵马俑》教学反思
2016/02/24 职场文书
SQL之各种join小结详细讲解
2021/08/04 MySQL