位置: 编程技术 - 正文

javascript学习小结之prototype(小白学javascript)

编辑:rootadmin

推荐整理分享javascript学习小结之prototype(小白学javascript),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:小白学javascript,javascript入门教程,javascript该怎么学,javascript如何学,javascript要怎么学,javascript怎么学,javascript怎么学,javascript如何学,内容如对您有帮助,希望把文章链接给更多的朋友!

JS中的prototype是JS中比较难理解的一个部分

本文基于下面几个知识点:

1 原型法设计模式在.Net中可以使用clone()来实现原型法

原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。我们称B的原型为A。

2 javascript的方法可以分为三类:a -> 类方法

b -> 对象方法

c -> 原型方法

例子:

3. obj1.func.call(obj)方法意思是将obj看成obj1,调用func方法,本来调用的是obj1的func方法,但是,传入obj后,改变了上下文对象,就通过obj对象来调用ojb1的方法了

好了,下面一个一个问题解决:

prototype是什么含义?

javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。

javascript学习小结之prototype(小白学javascript)

A.prototype = new B();

理解prototype不应把它和继承混淆。A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍。A能使用B的方法和属性。这里强调的是克隆而不是继承。可以出现这种情况:A的prototype是B的实例,同时B的prototype也是A的实例。

先看一个实验的例子:

我们首先定义了baseClass类,然后我们要定义extentClass,但是我们打算以baseClass的一个实例为原型,来克隆的extendClass也同时包含showMsg这个对象方法。

extendClass.prototype = new baseClass()就可以阅读为:extendClass是以baseClass的一个实例为原型克隆创建的。

那么就会有一个问题,如果extendClass中本身包含有一个与baseClass的方法同名的方法会怎么样?

下面是扩展实验2:

实验证明:函数运行时会先去本体的函数中去找,如果找到则运行,找不到则去prototype中寻找函数。或者可以理解为prototype不会克隆同名函数。

那么又会有一个新的问题:

如果我想使用extendClass的一个实例instance调用baseClass的对象方法showMsg怎么办?

答案是可以使用call:

这里的baseinstance.showMsg.call(instance);阅读为“将instance当做baseinstance来调用,调用它的对象方法showMsg”

好了,这里可能有人会问,为什么不用baseClass.showMsg.call(instance);

这就是对象方法和类方法的区别,我们想调用的是baseClass的对象方法

最后,下面这个代码如果理解清晰,那么这篇文章说的就已经理解了:

标签: 小白学javascript

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

上一篇:简单实现JS对dom操作封装(js操作dom节点的方法)

下一篇:Javascript实现检测客户端类型代码封包(javascript test)

  • 企业所得税的计提和缴纳分录
  • 办税人员可以不交社保吗
  • 本月未记账凭证是什么意思
  • 其他应收款财务报表取数
  • 房地产按揭是什么意思
  • 个人所得税申报错误如何更正申报
  • 个人名义购房
  • 企业内部商品转移怎么核算
  • 外商独资企业在分配利润时是否扣缴个税
  • 长期挂账应收账款怎么调
  • 原材料暂估少了如何调整
  • 出纳现金日记账表格模板
  • 固定资产领用流程图
  • 营改增后劳务派遣公司账务处理
  • 一般纳税人辅导期预缴
  • 单位预算支出包括哪些
  • 家具属于固定资产什么类别
  • 如何结束excel
  • word基本怎么使用
  • php使用js
  • 喜加一平台
  • PHP:Memcached::touchByKey()的用法_Memcached类
  • 物业管理费发票图片
  • 艾灸的好处与功效女人
  • 宾馆一次性用品有哪些
  • 公路客运车辆
  • php删除数据
  • 税务的基本职能
  • PHP:imagegrabscreen()的用法_GD库图像处理函数
  • el-table(type=“selection“)多选框两种回显
  • 小企业的费用包括生产成本吗
  • 关于php通用返回的问题
  • 油卡预付卡发票能入费用吗怎么入账
  • nvme安装方法
  • web过滤器的常见应用
  • mobilenet模型
  • yolov5源码解读
  • php判断ua
  • 贷款和应收款项属于金融资产吗
  • 以前年度损益调整借贷方向
  • 什么时候需要结转损益
  • 小微企业减免额怎么计算
  • 税控系统维护费普通发票可以全额抵扣吗
  • 所得税年度报表申报完怎么打印
  • 材料采购成本是什么科目
  • 个体工商户具体工作内容怎么写
  • 专项扣除三险一金是哪三险
  • 饭店开业多久可以正常
  • 跨年银行回单怎么入账
  • 住宿费用专票可以抵扣吗
  • 快递费用是否可以开发票
  • 预付账款业务
  • 计时工资和计件工资的含义
  • 领用自产产品用于固定资产
  • 利息与资金占用费
  • 政府补贴是否交增值税
  • 公司购买汽车的购置税可以抵税吗
  • 新医院会计制度什么时候实施
  • 公司股东借款转私人账户
  • 在MySQL中同时查找两张表中的数据的示例
  • sql高级写法
  • win7旗舰版系统重装
  • linux系统命令包含在哪个目录中
  • 升级win10系统后安装谷歌打不开
  • linux openfoam
  • javascript抢票
  • LayoutInflater.inflate方法解析
  • js日期操作
  • unity网格地形
  • javascript模板
  • 从安卓设备导入
  • 河北省国税局发展前景
  • 重庆市国税网官方网站
  • 税务数据清理变态
  • 安徽省各地区最低录取中考分数线
  • 个人无偿捐赠增值税
  • 强化管理定义
  • 专票代开流程?
  • 12月份医保没有到账
  • 城市维护建设税减半征收政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设