位置: 编程技术 - 正文

学习JavaScript设计模式(继承)(javascript怎么学)

编辑:rootadmin

推荐整理分享学习JavaScript设计模式(继承)(javascript怎么学),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript如何学,javascript教程chm,javascript设计,javascript设计,javascript教程chm,javascript教程chm,javascript课设,javascript设计,内容如对您有帮助,希望把文章链接给更多的朋友!

1、继承

在javascript中继承是一个非常复杂的话题,比其他任何面向对象语言的中的继承都复杂得多。在大多数其他面向对象语言中,继承一个类只需要使用一个关键字即可。与它们不同,在javascript中要想达到传承公用成员的目的,需要采取一系列措施。更有甚者,javascript属于使用原型式继承的少数语言之一。利益于这种语言的灵活性,你既可使用标准的基于类的继承,也可使用更微妙一些的原型式继承。

2、为什么需要继承&#;

一般来说,在设计类的时候,我们希望能减少重复性的代码,并且尽量弱化对象间的耦合。使用继承符合前一个设计原则的需要。借助这种机制,你可以在现有类的基础上进行设计并充分利用它们已经具备的各种方法,而对设计进行修改也更为轻松。假设你需要让几个类都拥有一个按特定方式输出类结构的toString()方法,当然可以用复制加粘贴的办法把定义toString()方法的代码添加到每一个类中,但这样做的话,每当需要改变这个方法的工作方式时,你将不得不在每一个类中重复同样的修改。反之,如果你提供了一个ToStringProvider类,然后让那些类继承这个类,那么toString这个方法只需在一个地方声明即可。

让一个类继承另一个类可能会导致二者产生强耦合,也即一个类的依赖于另一个类的内部实现。我们将讨论一些有助于避免这种问题的技术,其中包括用掺元类为其他类提供方法这种技术。

3、基于类的继承

下面看下面的代码:

输出结果: 张三 , 可以看到Student成功集成了Person,并且拥有了Person的say方法,核心代码其实就是一句 Student.prototype = new Person();,下面通过图解来说明原理:

学习JavaScript设计模式(继承)(javascript怎么学)

将Student.prototype指向new Person() , new Person的_proto_又指向Person Prototype;这样完成了整个继承。

但是这种方式存在问题:

问题1:当父类存在引用类型变量时,造成数据不一致,下面我们给Person添加一个hobbies属性,类型为数组。

输出结果:张三 , , soccer 李四 , , soccer,girl 可以看出,李四的hobbies应该只有girl,但是上面的代码让所有对象共享了hobbies属性。 上述的继承方式还存在一个问题:

问题2:在Student的构造方法中,无法使用new Student(“” , “张三” , ) ;创建对象,并初始化name和age属性,必须stu.name, stu.age进行赋值

为了解决上述问题,对上述代码进行修改:

输出: , 张三 , soccer , 李四 , cangjin,basketball 在Student的构造方法中使用了Person.call(this,name,age)感觉就像super(name,age)【call的第一个参数为上下文】;并且成功解决了对引用属性的共享问题,完美解决。

4、基于原型链的继承

输出:zhangsan , , Java lisi , , Java,Javascript 可以看出同样存在引用属性不一致的问题,并且整个操作全部基于对象,给人的感觉不是很好,下面通过图解解释下原理:

对象间通过一个clone函数,不断的返回一个新的对象,且prototype执行传入的对象,整个继承过程其实就是_proto_不断的指向,形成一个链,所以叫做原型链。

好了,已经介绍完了,js的两种集成的方式,最好使用的还是通过类的继承,比较稳定。

标签: javascript怎么学

本文链接地址:https://www.jiuchutong.com/biancheng/386287.html 转载请保留说明!

上一篇:js图片跟随鼠标移动代码(js鼠标滚动控制图片缩放)

下一篇:学习JavaScript设计模式(链式调用)(javascript教程chm)

  • 贷款其他消费是指什么
  • 房屋产权出典的由承典人作为房产税纳税义务人
  • 申请电子发票需要交钱吗
  • 员工加班餐费计入会计什么科目
  • 负数增长到正数的例子
  • 待评估资产价值
  • 车辆过户需要交费吗
  • 增值税发票信息错误可以作废重开吗
  • 在大陆工作的香港明星
  • 跨年度费用怎么入账
  • 计提工资会计科目怎么写
  • 发票密码区超出还能用吗
  • 查账征收企业所得税年度申报
  • 投资收益所得税表怎么填
  • 水利建设基金的计税依据及税率
  • 商家拒开发票的五大借口
  • 没有道路许可证可上营运吗
  • 车间管理人员工作总结
  • 增值税返还收入冲减进项税
  • 生产企业销售原材料所取得的收入属于( )
  • 企业购买设备可以税前扣除吗
  • 地税退税怎么做分录
  • 进项税抵扣需要做分录吗
  • 超市收代金券如何处理
  • 如何使用腾讯电子签维护自己的权益
  • 苹果电脑如何缩小图片大小
  • 房地产行业需要做环评吗
  • 技术合同包括哪些类型
  • 单位给个人开票需要什么资料才能开
  • 购货方收到红字发票计入进项税转出还是进项税额负数?
  • 调整系统保留带宽的命令
  • 视同销售货物服务无形资产
  • vue3 超好用的富文本编辑器
  • 武侯祠红墙在哪个门
  • 凯丽温泉可以做spa
  • 超限量发票申请下来后怎么操作
  • web全栈工程师是干什么的
  • 一般纳税人销售自己使用过的汽车
  • javaweb实现用户登录注册
  • vue 登陆
  • python3.9怎么清屏
  • 商业银行贷款的资本充足率
  • 主营业务收入用三栏式吗
  • 抵账房啥意思
  • 办理银行承兑汇票保证金比例
  • 支付股息如何做账
  • 个人所得税其他扣除300一个月
  • 冲红的发票怎么做账会计分录
  • 承兑汇票大回头是啥意思
  • 长期待摊费用核销
  • 进项票可以抵扣企业所得税吗
  • 商业承兑汇票怎么贴现
  • 什么是存货周转天数
  • 人力资源服务费是什么意思
  • 以前年度财务费用漏记
  • 增值税可以退吗
  • 银行承兑汇票提示付款期限
  • 购进货物用于集体福利会计分录
  • 开具旧税号也能认证成功
  • 固定资产投资方案
  • 三种实现方法实现的特点
  • 安装软件提示windows 无法访问指定设备,路径或文件
  • win8系统无法开机如何备份数据
  • 如何解决焦虑的心理
  • xp操作系统入门
  • xp软件自动启动
  • win7与xp文件共享
  • 大白菜U盘安装原版XP系统教程精细版
  • centos7rz
  • shwicon.exe - shwicon是什么进程 有什么用
  • slee401.exe - slee401是什么进程 有什么用
  • win7操作系统的主要功能
  • android游戏编程之从零开始
  • 为了防止编码过程的过载现象出现
  • 基于单片机的毕业设计题目
  • 简洁实用的公司治理机制
  • 北京市地方税务局发票查验
  • 国税局招录条件
  • 河北省税务局地址邮编
  • 郑州金水区税务大厅电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设