位置: 编程技术 - 正文

JavaScript代码复用模式详解(js复制字符串的方法)

编辑:rootadmin

推荐整理分享JavaScript代码复用模式详解(js复制字符串的方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js复制数组的方法,js复制字符串的方法,js复选框代码,js复制代码,js复制字符串的方法,js 复制函数,js代码复用,js复制代码,内容如对您有帮助,希望把文章链接给更多的朋友!

代码复用及其原则

代码复用,顾名思义就是对曾经编写过的代码的一部分甚至全部重新加以利用,从而构建新的程序。在谈及代码复用的时候,我们首先可以想到的是继承性。代码复用的原则是:

在js中,由于没有类的概念,因此实例的概念也就没多大意义,js中的对象是简单的键-值对,可以动态的创建和修改它们。

但在js中,我们可以使用构造函数和new操作符来实例化一个对象,这与其他使用类的编程语言在语法上有其相似之处。

例如:

js在调用构造函数Person时似乎看起来是一个类,但其实际上仍然是一个函数,这让我们产生了一些假定在类的基础上的开发思路和继承模式,我们可以称之为“类式继承模式”。

传统的继承模式是需要class关键字的,我们假定以上的类式继承模式为现代继承模式,这是一种不需要以类的方式考虑的模式。

类式继承模式

看下面两个构造函数Parent()和Child()的例子:

当使用new Child()语句创建一个对象时,它会通过原型从Parent()实例获取它的功能,比如:

原型链

讨论一下类式继承模式下原型链的工作原理,我们将对象看做是内存中某处的块,该内存块包含数据以及指向其他块的引用。当用new Parent()语句创建一个对象时,就会创建如下图左边的这样一个块,这个块保存了name属性,如果想访问say()方法,我们可以通过指向构造函数Parent()的prototype(原型)属性的隐式链接__proto__,便可访问右边区块Parent.prototype。

JavaScript代码复用模式详解(js复制字符串的方法)

那么,当使用var kid = new Child()创建新对象时会发生什么?如下图:

使用new Child()语句所创建的对象除了隐式链接__proto__外,它几乎是空的。这种情况下,__proto__指向了在inherit()函数中使用new Parent()语句所创建的对象

当执行kid.say()时,由于最左下角的区块对象并没有say()方法,因此他将通过原型链查询中间的区块对象,然而,中间的区块对象也没有say()方法,因此他又顺着原型链查询到最右边的区块对象,而该对象正好有say()方法。完了吗?

执行到这里的时候并没有完,在say()方法中引用了this.name,this指向构造函数所创建的对象,在这里,它指向了new Child()这个区块,然而,new Child()中并没有name属性,为此,将查询中间区块,而中间区块正好有name属性,至此,原型链的查询完毕。

更详细的讨论请查看我这篇文章:javascript学习笔记(五)原型和原型链详解

共享原型

本模式的法则在于:可复用的成员应该转移到原型中而不是放置在this中。因此,处于继承的目的,任何值得继承的东西都应该放在原型中实现。所以,可以将子对象的原型与父对象的原型设置为相同即可,如下示例所示:

子对象和父对象共享同一个原型,并且可以同等的访问say()方法。然而,子对象并没有继承name属性

原型继承

原型继承是一种“现代”无类继承模式。看如下实例:

在原型模式中,并不需要使用对象字面量来创建父对象。如下代码所示,可以使用构造函数来创建父对象,这样做的话,自身的属性和构造函数的原型的属性都将被继承。

本模式中,可以选择仅继承现有构造函数的原型对象。对象继承自对象,而不论父对象是如何创建的,如下实例:

JavaScript函数模式详解 在javascript中,函数是一类对象,这表示他可以作为参数传递给其他函数;此外,函数还可以提供作用域。js函数基础部分:javascript学习笔记(四)functio

js 操作符汇总 逻辑或(||)varresult=true||false;与逻辑与操作相似,如果有一个操作数不是布尔值,逻辑或也不一定返回布尔值;此时,它遵循下列规则:□如果第一个操作

浅谈JS闭包中的循环绑定处理程序 前几天工作中写前端js代码时,遇到了遍历元素给它添加单击事件。就是这个问题让我整整调了一个下午。最后还是下班回家,上网查资料才知道怎么解

标签: js复制字符串的方法

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

上一篇:网页中表单按回车就自动提交的问题的解决方案(frontpage网页表单)

下一篇:JavaScript函数模式详解(js function函数)

  • 企业中秋晚会活动方案
  • 车船税规定怎么缴纳
  • 个人股权转让如何纳税
  • 增值税专票税率1%
  • 从价计征房产税怎么算 原值和出租房原值
  • 租车属于经营租赁吗
  • 开办期间的财务会计制度
  • 小微企业增值税优惠政策最新2023
  • 公司的旅游费怎么处理
  • 逾期不缴纳税款责令限改期限内改正的
  • 长期股权投资权益法初始成本的确定
  • 费用退回现金如何入账
  • 购买办公用品账务处理
  • 摊销商标使用权的会计科目
  • 合并报表汇兑损益怎么填
  • 监控安装属于什么税目
  • 减免能减多久
  • 行程单和发票的区别 报销
  • 红字发票开具只能针对一份发票 不可以只冲红其中一部分吗?
  • 利得一定会影响利润吗
  • 公司借出的私人物品
  • 个人所得税申报晚了一天会干什么
  • 零售金银首饰消费税税率是多少
  • 本月没有发生额,月末怎么结账
  • 货物入库会计分录怎么做
  • 如何关闭windows10自动更新
  • 汇算清缴时研发费用加计扣除怎么做账
  • 融资租赁税费计算
  • 出差人员差旅费作细的说明叫什么
  • KB5004296无法安装,提示错误代码:0x800f0990的解决方法
  • 收到保险公司赔付的车辆维修费的会计分录
  • P2PNetworking3.exe - P2PNetworking3是什么进程 有什么用
  • php的array_multisort()使用方法介绍
  • 纳税人转登记期限
  • 蛇形矩阵找数的位置
  • anconda虚拟环境路径
  • 增值税密码锁定怎么办
  • 前端基础知识总结
  • 公司注册资金表格模板
  • 核定征收的收入
  • python中np.array用法
  • centos7.1
  • 零申报年报
  • 新公司开基本户需要带什么材料
  • 个体户需要税务报道不
  • 餐饮服务收入的增值税
  • sqlserver调度
  • 党建经费提取是上年度还是下年
  • MySQL导入导出命令
  • sql2008用ip连接不了
  • 通货膨胀率怎么求
  • 工程结算收入如何确定
  • 烈士祭扫仪式
  • 内部债权债务的抵消分录
  • 待抵扣进项税额是什么情况下用的
  • 公司注销开户许可证是不是要上交
  • 进销存怎么看
  • 应收应付账款统计表
  • 收银系统入库入错了怎么办
  • 润滑油开具增值税专用发票
  • 固定资产报废需要税务备案吗
  • 什么是加计扣除农产品进项税额
  • win2008r2下载
  • compaq-rba.exe是哪个方面的进程 作用是什么 compaq-rba进程查询
  • 2007皖价服
  • dns轮询是什么意思
  • nodejs writestream
  • ContentProvider之通过ContentResolver获取图像、视频、音频举例
  • 微信小程序用户名怎么改名
  • relative absolute无法冲破的等级问题解决第1/3页
  • 粒子form
  • linux shell if -e
  • 缓动函数网站
  • jquery.form.js下载
  • unity-chan
  • 百旺开票人怎么把管理员改成人名
  • 个人所得税代扣代缴手续费退库申请
  • 彩票中奖归出钱人还是中奖人
  • 进口退税能退税吗现在
  • 会议服务费属于什么类别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设