深入理解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事件列表解说
Dec 22 Javascript
使用jquery实现select添加实现后台权限添加的效果
May 28 Javascript
js中根据字数截取字符串,不能截断url
Jan 12 Javascript
Javascript实现多彩雪花从天降散落效果的方法
Feb 02 Javascript
JS表的模拟方法
Feb 05 Javascript
javaScript封装的各种写法
Aug 14 Javascript
angularjs实现简单的购物车功能
Sep 21 Javascript
JS从非数组对象转数组的方法小结
Mar 26 Javascript
Vue 中mixin 的用法详解
Apr 23 Javascript
AngularJS发送异步Get/Post请求方法
Aug 13 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
Oct 23 Javascript
关于JavaScript轮播图的实现
Nov 20 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操作符与控制结构代码
2011/12/30 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
JS解析XML的实现代码
2009/11/12 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
AngularJS 应用模块化的使用
2018/04/04 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
BootStrap中的模态框(modal,弹出层)功能示例代码
2018/11/02 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
python获取图片颜色信息的方法
2015/03/18 Python
python获取一组数据里最大值max函数用法实例
2015/05/26 Python
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
大学生自我评价范文
2015/03/03 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书
Java输出Hello World完美过程解析
2021/06/13 Java/Android
解决tk mapper 通用mapper的bug问题
2021/06/16 Java/Android