深入理解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 相关文章推荐
jquery 框架使用教程 AJAX篇
Oct 11 Javascript
JavaScript中的style.display属性操作
Mar 27 Javascript
js 判断js函数、变量是否存在的简单示例代码
Mar 04 Javascript
DOM基础教程之使用DOM + Css
Jan 20 Javascript
JavaScript操作XML文件之XML读取方法
Jun 09 Javascript
jquery实现从数组移除指定的值
Jun 24 Javascript
微信小程序 video组件详解
Oct 25 Javascript
jQuery学习之DOM节点的插入方法总结
Jan 22 Javascript
JavaScript使用闭包模仿块级作用域操作示例
Jan 21 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
Apr 15 Javascript
vue和H5 draggable实现拖拽并替换效果
Jul 29 Javascript
vue之封装多个组件调用同一接口的案例
Aug 11 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
10款实用的PHP开源工具
2015/10/23 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
Jquery获取radio选中的值
2017/05/05 jQuery
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
Python模块学习 datetime介绍
2012/08/27 Python
Python中实现的RC4算法
2015/02/14 Python
Python制作简单的网页爬虫
2015/11/22 Python
一篇文章入门Python生态系统(Python新手入门指导)
2015/12/11 Python
Python3 replace()函数使用方法
2018/03/19 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
Python如何存储数据到json文件
2020/03/09 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
澳洲健康食品网上商店:Aussie Health Products
2018/06/15 全球购物
校园文化建设方案
2014/02/03 职场文书
保密普查工作实施方案
2014/02/25 职场文书
财务主管岗位职责
2014/02/28 职场文书
大学新生军训自我鉴定
2014/03/18 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
财产保全担保书范文
2014/04/01 职场文书
教师自查自纠材料
2014/10/14 职场文书
司法局群众路线教育实践活动开展情况总结
2014/10/25 职场文书
在项目中使用redis做缓存的一些思路
2021/09/14 Redis