位置: 编程技术 - 正文

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)

  • 怎么算印花税计算器
  • 用人单位延迟给员工交社保怎么办
  • 城市生活垃圾处理收费管理办法
  • 增值税延期滞纳金是多少
  • 高速公路上的机电一体化有哪些
  • 应税消费品的税目有哪些
  • 个体工商户如何注册
  • 质量不合格起诉状
  • 银行存款收款凭证
  • 接受投资者的无形资产
  • 单位充话费送手机
  • 电子承兑必须对账吗
  • 营改增后建筑业
  • 现代服务业要满足什么条件才转一般纳税人
  • 企业拆迁补偿款要交税吗
  • 事业单位的房租上缴国库吗
  • 一般纳税人贸易公司每个月最低费用多少
  • 关于有什么新的政策
  • 购买方已抵扣开具红字信息表销售方怎么处理
  • 工会经费的优惠政策2020
  • win10专业版如何改为家庭版
  • 去年的发票今年怎么做会计分录
  • ipad怎么切换输入法
  • 发放工资的时候,如何在excel里快速查询未发放成功的
  • vue jsx报错
  • remind32.exe - remind32是什么进程 有什么用
  • php中session的作用
  • 专有技术应当得到
  • 金融企业贷款逾期怎么办
  • 在途物资属于什么科目借贷方向
  • 当地税务机关
  • 企业注销清算需要交什么税
  • 稽查查补税款会计分录
  • 企业实行股权激励的作用
  • 项目资本金现金流量表现金流入
  • thinkphp伪静态nginx
  • 增值税发票的作业
  • 对数前面有符号怎么计算
  • 各浏览器主页的网址
  • php解析xml文件
  • python类的继承与多态
  • 所得税汇算会计处理
  • 公司处置汽车
  • 增值税加计抵减最新政策2022
  • 收到退回的企业所得税,资产负债表如何填
  • 投资收益收到的现金增加的原因
  • 餐饮服务需要卫生许可证吗
  • 小规模纳税人会自动转为一般纳税人
  • 母子公司关联交易规定
  • 应交增值税为负数是什么意思
  • 农民专业合作社税收优惠政策
  • 经营活动现金流量净额是什么意思
  • 代垫费用开什么发票
  • 公司注销应收账款如何转让给第三方
  • 租赁公司账务科目
  • 暂估销售收入账目
  • 发票丢了能做账吗
  • 申报高新技术企业专利有什么要求
  • 在sql server中触发器不具有什么类型
  • win10 性能选项
  • win键有啥用
  • 了解的近义词
  • win7如何创建文件夹
  • ubuntu photoshop
  • Windows系统通过注册表实现打开CMD并定位到指定文件夹
  • 恢复window
  • windows8.1开机
  • unity3d 多线程
  • python中的文件读写
  • linux多线程调试手段
  • unity shader lod
  • javascript delete 使用示例代码
  • Vuforia How To Use Android Plugins in Unity Apps
  • jquery的实现原理
  • js基础
  • 税务局三级主办是副科吗
  • 国家税务总局开票系统怎么开票
  • 居间服务费税收优惠政策
  • 河北社保网上申报时间
  • 宁夏地税局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设