详解一个小实例理解js原型和继承


Posted in Javascript onApril 24, 2019

导语1:一个构造函数的原型对象,其实就是这个构造函数的一个属性而已,属性名叫prototype,值是一个对象,对象中有一些属性和方法,所以每个构造函数的实例对象都拥有这些属性和方法的使用权。

导语2:构造函数需要用 new 操作符来调用,它本身没有任何意义,只有实例化后才有生命,当然你也可以把它当普通函数使用,那this就是指向window了(意义不大)。

导语3:对于构造函数实例化出一个对象经历了什么?

我们看下面这个例子:

详解一个小实例理解js原型和继承

这个例子充分说明了,大佬们创造出构造函数这种东西,是有特殊用处的,本身没什么意义,在实例化后瞬间有了生命。

 好了有这些准备工作后,我们开始写一个构造函数+原型用法

废话不多说直接上代码!!!

 详解一个小实例理解js原型和继承

1,这个例子中有个构造函数,名字叫GetElem,参数期望传入的是一个元素的id,可以获取这个id的元素;

2,实例化一个叫domOne的对象,它传入一个实参为:“old”;所以它可以获取这个id为old的元素

3,在构造函数的原型上定义一个方法叫:changeInner 作用是如果传入了实参就用实参来改变元素的内容

4,在构造函数的原型上定义一个方法叫:on作用是根据事件类型和对应函数干一些事情;

domOne这个实例化对象中并没有这两个方法,但是没关系,它的原型对象上拥有啊!!!所以可以直接用;

您一定会问为何不直接把方法写在构造函数中不就省事了?原因是这样的话,每实例化一个对象都要在实例化过程中创建这些方法,

如果实例化太多就消耗性能,而放在原型对象上就只需要做一次。这也是构造函数+原型优于工厂模式的方面。

 最后一张图:

 详解一个小实例理解js原型和继承

方法可以链接起来写的原因是  在每个方法中  return this (this指向的是实例对象,当然可以继续调用它可以调用的方法啦!!!)

以上所述是小编给大家介绍的js原型和继承详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 得到变量类型的函数
May 19 Javascript
使用隐藏的new来创建对象
Mar 29 Javascript
用js实现控件的隐藏及style.visibility的使用
Jun 14 Javascript
一个简单的动态加载js和css的jquery代码
Sep 01 Javascript
javascript设计模式之中介者模式Mediator
Dec 30 Javascript
jQuery制作拼图小游戏
Jan 12 Javascript
基于jQuery实现复选框是否选中进行答题提示
Dec 10 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
Jul 05 Javascript
JavaScript 深层克隆对象详解及实例
Nov 03 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
Oct 04 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
Apr 17 Javascript
vue render函数动态加载img的src路径操作
Oct 26 Javascript
微信小程序实现的一键复制功能示例
Apr 24 #Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
Apr 24 #Javascript
解决vue 单文件组件中样式加载问题
Apr 24 #Javascript
vue router 用户登陆功能的实例代码
Apr 24 #Javascript
10个最受欢迎的 JavaScript框架(推荐)
Apr 24 #Javascript
vue.js多页面开发环境搭建过程
Apr 24 #Javascript
小程序实现订单倒计时功能
Apr 23 #Javascript
You might like
php下删除字符串中HTML标签的函数
2008/08/27 PHP
PHP调用Webservice实例代码
2011/07/29 PHP
PHP获取当前所在目录位置的方法
2014/11/26 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
jQuery 获取兄弟元素的几种不错方法
2014/05/23 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
Electron 调用命令行(cmd)
2019/09/23 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
python选择排序算法的实现代码
2013/11/21 Python
python实现自动重启本程序的方法
2015/07/09 Python
Python调用C语言的实现
2019/07/26 Python
python读取图像矩阵文件并转换为向量实例
2020/06/18 Python
python软件都是免费的吗
2020/06/18 Python
区分python中的进程与线程
2020/08/13 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
硕士研究生自我鉴定范文
2013/12/27 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
学生自我评语
2015/01/04 职场文书
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
为Java项目添加Redis缓存的方法
2021/05/18 Redis
go语言中http超时引发的事故解决
2021/06/02 Golang
使用refresh_token实现无感刷新页面
2022/04/26 Javascript