位置: 编程技术 - 正文

Javascript 学习笔记之 对象篇(二) : 原型对象(javascript学习指南)

编辑:rootadmin

推荐整理分享Javascript 学习笔记之 对象篇(二) : 原型对象(javascript学习指南),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript总结笔记,javascript如何学,javascript教程,javascript基础笔记,javascript怎么学,javascript基础笔记,javascript基础笔记,javascript基础笔记,内容如对您有帮助,希望把文章链接给更多的朋友!

Javascript 是唯一一个被广泛运用的原型式继承的语言,所以理解两种继承方式的差异是需要时间的。

第一个主要差异就是 Javascript 使用原型链来继承:

设置 Bar 的 prototype 为 Foo 的对象实例:

确保 Bar 的构造函数为本身,并新建一个 Bar 对象实例:

下面我们来看下整个原型链的组成:

在上面的例子中,对象 test 将会同时继承 Bar.prototype 和 Foo.prototype。因此它可以访问定义在 Foo 中的函数 method。当然,它也可以访问属性 value。需要提到的是,当 new Bar() 时并不会创建一个新的 Foo 实例,而是重用它原型对象自带的 Foo 实例。同样,所有的 Bar 实例都共享同一个 value 属性。我们举例说明:

原型链查找机制

当访问一个对象的属性时,Javascript 会从对象本身开始往上遍历整个原型链,直到找到对应属性为止。如果此时到达了原型链的顶部,也就是上例中的 Object.prototype,仍然未发现需要查找的属性,那么 Javascript 就会返回 undefined 值。

Javascript 学习笔记之 对象篇(二) : 原型对象(javascript学习指南)

原型对象的属性

尽管原型对象的属性被 Javascript 用来构建原型链,我们仍然可以值赋给它。但是原始值复制给 prototype 是无效的,如:

这里讲个本篇的题外话,介绍下什么是原始值:在 Javascript 中,变量可以存放两种类型的值,分别是原始值和引用值。

1.原始值(primitive value):

原始值是固定而简单的值,是存放在栈 stack 中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。原始类型有以下五种型: Undefined, Null, Boolean, Number, String。

2.引用值(reference value):

引用值则是比较大的对象,存放在堆 heap 中的对象,也就是说,存储在变量处的值是一个指针 pointer,指向存储对象的内存处。所有引用类型都集成自 Object。原型链性能问题

如果需要查找的属性位于原型链的上端,那么查找过程对于性能而言无疑会带来负面影响。当在性能要求必要严格的场景中这将是需要重点考虑得因素。此外,试图查找一个不存在属性时将会遍历整个原型链。同样,当遍历一个对象的属性时,所有在原型链上的属性都将被访问。

总结

理解原型式继承是写较为复杂的 Javascript 代码的前提,同时要注意代码中原型链的高度。当面临性能瓶颈时要学会将原型链拆分开来。此外,要将原型对象 prototype 和原型 __proto__ 区分开来,这里主要讨论原型对象 prototype 就不阐述关于原型 __proto__ 的问题了,

Javascript学习笔记之 对象篇(三) : hasOwnProperty //PoisoningObject.prototypeObject.prototype.bar=1;varfoo={goo:undefined};foo.bar;//1'bar'infoo;//truefoo.hasOwnProperty('bar');//falsefoo.hasOwnProperty('goo');//true在这里,只有hasOwnProperty

Javascript学习笔记之 对象篇(四) : for in 循环 先上范例://PoisoningObject.prototypeObject.prototype.bar=1;varfoo={moo:2};for(variinfoo){console.log(i);//printsbothbarandmoo}这里我们要注意两点,一是forin循环会忽略enumerable

Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式 函数声明functionfoo(){}函数foo将会在整个程序执行前被hoist(提升),因此它在定义foo函数的整个scope(作用域)中都是可用的。即使在函数定义之前调用它也

标签: javascript学习指南

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

上一篇:Javascript学习笔记之 对象篇(一) : 对象的使用和属性(javascript怎么学)

下一篇:Javascript学习笔记之 对象篇(三) : hasOwnProperty(javascript要怎么学)

  • 房产税计入哪个科目 新会计准则
  • 税务行政诉讼是由税务机关进行审理并作出裁决
  • 纳税人资格类型有哪些
  • 工资薪金所得和劳务报酬所得的区别
  • 美元利息结汇时结汇项目是什么
  • 生产能量计入固定成本
  • 工会经费的减免申请
  • 小企业货币资金1710元正常吗
  • 二手车交易怎么办理过户手续
  • 贴现是融资业务吗
  • 固定资产后续支出的确认和处理
  • 返利抵扣货款
  • 工程款发票开给委托方要如何处理?
  • 企业代扣代缴的个人所得税应通过税金及附加科目核算
  • 律师事务所收费单据
  • 今年交上年税审核要多久
  • 多交的增税怎么做账
  • 筹建期间发生的收入
  • 分支机构年度终了必须由总机构负责合并汇总纳税吗?
  • 预计负债什么时候确认
  • 公司自有房屋出租 营业范围
  • uefi启动u盘安装win10系统的详细流程
  • 固态被锁了
  • win 11 bug
  • 鸿蒙系统怎么设置导航键
  • 我国现行的关税税率种类及适用
  • PHP:oci_field_size()的用法_Oracle函数
  • 劳务费支出计入什么科目?
  • laravel入门与实战:构建主流php应用开发框架
  • php判断https
  • 水费里的代收费用是什么意思
  • 火爆全网的头像男
  • 服务器部署环境
  • 图像超分综述怎么做
  • 固定资产报废如何记账
  • 企业医疗保险属于什么类别
  • 学电脑哪个网站比较好
  • 利息分月计提按多少
  • 什么情况下需要做心脏造影
  • 三票合一的发票什么意思
  • 政府补助的分类包括
  • 土地增值税纳税申报期限
  • 业务招待费属于什么会计科目
  • 融资租赁的增值税专用发票可不可以抵扣
  • 如何在个人所得税app上修改扣缴义务人
  • 税控维护费跨年怎么算
  • 扣缴个人所得税报告表
  • 企业跨年度支出怎么计算
  • 基本户转到一般户用途写什么
  • 核算税金怎么核算
  • 加计抵减期末有余额怎么办
  • 如何理解预付年金终值期数和系数和记忆方法
  • 差旅费一般包括往返及当地的交通费
  • 施工企业人工费控制措施
  • 待认证进项发票哪里导出来数据
  • 广告公司如何开展业务
  • 财务人员需要填报的报表有哪些
  • sql server 2012r2
  • sql拆分函数
  • MySQL使用show status查看MySQL服务器状态信息
  • win7系统管理在哪
  • Win7系统进入桌面后点每个文件都会打转
  • win7显示无线网络未连接
  • 一键u盘安装系统
  • Ubuntu GNOME 14.10的桌面升级到GNOME 3.16教程
  • win8 cmd在哪
  • centos 7 dns
  • win8内存管理
  • 安卓闹钟软件下载
  • JavaScript 和 Java 的区别浅析
  • css中层叠的含义
  • js实现双击屏幕放大
  • unity怎么录屏
  • 12123怎么上传交强险
  • 存款利息需要交税吗
  • 没工作个人所得税
  • 专票代开流程?
  • 重庆市大学生田径锦标赛
  • 烟叶税是谁交
  • 企业所得税零申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设