深入理解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 Event学习第三章 早期的事件处理程序
Feb 07 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
Apr 01 Javascript
js constructor的实际作用分析
Nov 15 Javascript
js实现在同一窗口浏览图片
Sep 17 Javascript
jquery+css实现动感的图片切换效果
Nov 25 Javascript
jQuery为DOM动态追加事件的方法
Feb 16 Javascript
原生JS实现图片网格式渐显、渐隐效果
Jun 05 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
Jul 17 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
Jun 09 Javascript
送你43道JS面试题(收藏)
Jun 17 Javascript
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 jQuery
Vue鼠标滚轮滚动切换路由效果的实现方法
Aug 04 Vue.js
基于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
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
JavaScript 32位整型无符号操作示例
2013/12/08 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
微信通过页面(H5)直接打开本地app的解决方法
2017/09/09 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
2019/02/27 Python
Python魔法方法功能与用法简介
2019/04/04 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
python利用opencv实现SIFT特征提取与匹配
2020/03/05 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
英语教研活动总结
2014/07/02 职场文书
教师三严三实对照检查材料
2014/09/25 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
三方合作意向书范本
2015/05/09 职场文书
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers