位置: 编程技术 - 正文

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要怎么学)

  • 下列各项中免征增值税的有
  • 公司费用票
  • 普票冲红原票要退回吗
  • 公务员工资待遇标准表
  • 固定资产成本包括包装费吗
  • 资本回收系数等于什么系数与利率之和
  • 实收资本未完全到账,需要缴纳印花税吗
  • 增值税普通发票怎么开
  • 什么情形下可以认定为重婚
  • 地税评为d级纳税人是指
  • 港口建设费2021年归国家税务总局
  • 已开票怎么做坏账处理
  • 非公司员工缴纳社保有什么影响
  • 核销外管证需要什么手续
  • 公司发手机奖励合法吗
  • 收益性支出包括哪些科目
  • 转让旧固定资产怎么做账
  • 劳务外包收入公式是什么
  • 社保缴费要和工龄一致吗
  • 什么时候不能计入开办费
  • 商贸公司如何结算成本
  • 鸿蒙系统网络差怎么解决
  • php ini
  • 笔记本cpu排行天梯
  • 已删除好友的聊天记录
  • 租赁的车间改造的会计分录
  • PHP:oci_field_type()的用法_Oracle函数
  • 企业向股东发放现金股利会引起
  • php数据库编程
  • 可变现净值属于资产计量属性吗
  • react中的key的作用
  • 企业销售折扣在计征所得税时如何处理
  • 金税三期税收管理系统响应异常返回信息:没有查询
  • 物流费属于什么税目
  • vue从入门到精通教程
  • 怎么冲暂估入账
  • libpcap python
  • 小规模季报所得税不超多少不用交税
  • 其他业务支出属于利润表项目吗
  • 成本核算方法是指
  • 企业做账会计分录流程
  • 折旧率多少正常
  • 带薪年假一般是什么时候
  • 工程奖金计入什么科目
  • 农村信用社可计算利息吗
  • 关于外币折算会计处理的表述中
  • 长期股权投资损益调整
  • 出包方式建造固定资产的成本包括
  • 跨年成本少结转如何调整
  • 用友软件冲销之前凭证怎么操作
  • 员工异地工作
  • 打车费会计分录怎么写
  • 建筑材料检测费入账科目
  • 贷款利息天数怎么算的
  • 净资产总计等于什么
  • Mysql优化sql方案
  • winxp怎么装系统
  • linux如何查询
  • dmidecode命令
  • win8如何修改文件权限
  • 如何在苹果电脑上下载软件
  • linux mv命令详解
  • 运行方式包括什么方式
  • 怎么取消win10通知消息
  • win10用360卫士好吗
  • win10安装驱动器
  • bootstrap内容
  • jquery layout 布局
  • cocos2dx-3.1.1 win8+eclipse+android开发 初学者容易迷惑的两个问题
  • html中的td
  • vue动态路由传参
  • shell脚本 -ne 0
  • SQLite3中文编码 Python的实现
  • javascript教学视频
  • 简述javascript中的函数
  • 全国哪些地区社保比例高
  • 施工企业建筑机械管理机构主要职责是负责建筑机械的
  • 江西省税务局发票查询平台官网
  • 暂停资本化期间,一般借款的借款利息不允许资本化
  • 南川大观薰衣草花期
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设