位置: 编程技术 - 正文

学习javascript面向对象 理解javascript原型和原型链(javascript怎么学好)

编辑:rootadmin

推荐整理分享学习javascript面向对象 理解javascript原型和原型链(javascript怎么学好),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript怎么学好,javascript该怎么学,javascript该怎么学,javascript要怎么学,javascript怎么学,javascript学到什么程度,javascript学了有什么用,javascript学了有什么用,内容如对您有帮助,希望把文章链接给更多的朋友!

先看一张图,梳理梳理。

一、基本概念  【原型链】每个构造函数都有一个对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。那么,如果原型对象等于另一个原型的实例,此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。如果另一个原型又是另一个原型的实例,那么上述关系依然成立。如此层层递进,就构成了实例与原型的链条。【原型对象】这个对象包含可以由特定类型的所有实例共享的属性和方法。所有引用类型默认都继承了Object,而这个继承也是通过原型链实现的。所有函数的默认原型都是Object的实例,因此默认原型都会包含一个内部指针,指向Object.prototype,这也正是所有自定义类型都会继承toString()、valueOf()方法的原因【构造函数】构造函数与其他函数的区别在于调用它们的方式不同。一般来说,函数只要通过new操作符来调用,那它就可以作为构造函数;如果不通过new操作符来调用,那它跟普通函数也不会有什么两样。[注意]用户自定义的函数和javascript中内置的构造函数可以当成构造函数使用【构造函数的写法】构造函数始终应该以一个大写字母开头,而非构造函数以一个小写字母开头。这个做法借鉴自其他OO语言,主要是为了区别于ECMAScript中的其他函数;因为构造函数本身也是函数,只不过可以用来创建对象而已【构造函数的三种使用场景】[a]当作构造函数使用

[b]当作普通函数调用

[c]在另一个对象的作用域中调用

【prototype属性】只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。[注意]只有函数才有prototype属性,object没有prototype属性【constructor属性】在默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向prototype属性所在函数的指针[注意]创建了自定义的构造函数之后,其原型对象默认只会取得constructor属性,至于其他方法则都是从Object继承而来的【_proto_和[[prototype]]】当调用构造函数创建一个新实例后,该实例的内部将包含一个指针(内部属性),指向构造函数的原型对象。ECMA-第5版管这个指针叫[[prototype]]。虽然在脚本中标准的方式访问[[prototype]],但firefoxsafarichrome在每个对象上都支持一个属性_proto_;而在其他实现中,这个属性对脚本则是完全不可见的。这个连接存在于实例与构造函数的原型对象之间,而不是存在于实例与构造函数之间二、基本操作  【原型链查询】每当代码读取某个对象的某个属性时,都会执行一次搜索,目标是具有给定名字的属性。搜索首先从对象实例本身开始,如果在实例中找到了具有给定名字的属性,则返回该属性的值;如果没有找到,则继续搜索指针指向的原型对象,在原型对象中查找具有给定名字的属性,如果找到了这个属性,则返回该属性的值。【添加实例属性】当为对象实例添加一个属性时,这个属性就会屏蔽原型对象中保存的同名属性;换句话说,添加这个属性只会阻止我们访问原型中的那个属性,但不会修改那个属性,即使将这个属性设置为null,也只会在实例中设置这个属性,而不会恢复其指向原型的连接。不过,使用delete操作符则可以完全删除实例属性,从而让我们能够重新访问原型中的属性。【原型的动态性】由于在原型中查找值的过程是一次搜索,因此我们对原型对象所做的任何修改都能立即从实例上反映出来,即使是先创建了实例后修改原型也照样如此。[注意]不推荐在产品化的程序中修改原生对象的原型

【重写原型】调用构造函数时会为实例添加一个指向最初原型的[[prototype]]指针,而把原型修改为另外一个对象就等于切断了构造函数与最初原型之间的联系。实例中的指针仅指向原型,而不指向构造函数。三、基本方法  [1]isPrototypeOf():判断实例对象和原型对象是否存在于同一原型链中,只要是原型链中出现过的原型,都可以说是该原型链所派生的实例的原型

学习javascript面向对象 理解javascript原型和原型链(javascript怎么学好)

[2]ECMAScript5新增方法Object.getPrototypeOf():这个方法返回[[Prototype]]的值

[3]hasOwnProperty():检测一个属性是否存在于实例中

[4]ECMAScript5的Object.getOwnPropertyDescriptor():只能用于取得实例属性的描述符,要取得原型属性的描述符,必须直接在原型对象上调用Object.getOwnPropertyDescription()方法

[5]in操作符:在通过对象能够访问给定属性时返回true,无论该属性存在于实例还是原型中

[6]同时使用hasOwnProperty()方法和in操作符,来确定属性是否存在于实例中

[7]ECMAScript5的Object.keys()方法:接收一个对象作为参数,返回一个包含所有可枚举属性的字符串数组[注意]一定要先new出实例对象再使用该方法,否则为空

[8]ECMAScript5的Object.getOwnPropertyNames()方法:接收一个对象作为参数,返回一个包含所有属性的字符串数组[注意]一定要先new出实例对象再使用该方法,否则只有constructor

希望本文所述对大家学习javascript程序设计有所帮助。

详解Bootstrap四种图片样式 在本章中,我们将学习Bootstrap对图片的支持。Bootstrap提供了四个可对图片应用简单样式的class,分别是:img-rounded添加border-radius:6px来获得图片圆角img-circ

详解Bootstrap按钮 描述BootstrapButton(按钮)JavaScript插件允许您加强按钮的功能。您可以控制按钮的状态,也可以为组件创建按钮组,比如工具条。什么是必需的您必须引

详解Bootstrap glyphicons字体图标 本章将讲解字体图标(Glyphicons),并通过一些实例了解它的使用。Bootstrap捆绑了多种字体格式的字形。首先让我们先来理解一下什么是字体图标。首先

标签: javascript怎么学好

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

上一篇:详解Bootstrap创建表单的三种格式(一)(bootstrapping怎么做)

下一篇:详解Bootstrap四种图片样式

  • 采购材料的进项税
  • 什么是消费税的计税销售额?价外费用是什么?
  • 公司研发人员定义
  • 盈余公积发放现金股利分录怎么写
  • 决算报表与账不一致怎么调账
  • 电子税务局利润表本期金额
  • 税盘清卡截止每个月
  • 增值税抵扣不够怎么解决
  • 财务费用为什么借方红字
  • 期间费用构成产品成本嘛
  • 企业递延所得税费用的计算公式
  • 购买商品有运费的分录
  • 从原材料到库存商品的生产核算过程
  • 出差补贴是否缴纳个人所得税 北京
  • 开具红字增值税专用发票是什么意思
  • 一般纳税人的资质在哪里打印
  • 补偿金需要缴纳个税分开
  • 如果没有预缴就开票会怎样?
  • 计提坏账准备和发生坏账准备分录
  • 向其他股东购买股权
  • 固定资产折旧金额影响因素
  • 收到科技局研发的短信
  • 鸿蒙密码锁设置密码的方法
  • 在win10中怎么从edge旧ie浏览器
  • pvlsvr.exe - pvlsvr是什么进程 有什么用
  • 固定资产原值减少说明什么
  • 怎么安装win7系统u盘
  • 如何在WIN10系统安装IE浏览器
  • Proxmox ve(PVE) 显示CPU和硬盘温度、UPS信息
  • php中字符串函数
  • mac系统怎么添加网络映射
  • 印花税和所得税需要计提吗
  • php中通过什么属性可以获取数组中元素的个数
  • 废品损失属于产品生产成本吗
  • 公司整体收购缴税
  • phpstan
  • 发行债券的会计分录摊销
  • 损益类科目包括利润分配吗
  • 坏账损失的会计分录
  • php json 对象
  • wisdm数据集
  • php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
  • php获取年月日
  • 公司股权分红会计分录
  • ps怎么把人p掉背景还原
  • 防伪税控系统该如何操作
  • mongodb的使用教程
  • 企业收到的国外发票可以入账吗
  • 增值税专用发票丢了怎么补救
  • mysql用中文字段
  • 个人销售商品交什么税
  • 买的加油卡怎么充值
  • 工会经费在哪儿申报
  • 企业有进项税额,无销项税额
  • 营业外支出科目核算的内容
  • 营业成本增加额公式
  • 现金支票存根联丢失怎么办
  • 小规模纳税人免税政策
  • 印花税税率是多少
  • 公司与股东的往来款
  • 电子发票上面的字体是什么字体
  • 增值税普通发票可以抵扣多少钱
  • 开了20万销项进项为0交多少税
  • 工业产值是指
  • mysql5.7.29安装
  • win8 系统设置
  • XP系统如何设置变流畅
  • Vista 优化预读文件设置,提速开关机速度
  • linux虚拟机基本操作
  • centos查看目录空间大小
  • NPFMSG.exe - NPFMSG是什么进程 有什么用
  • python做排序
  • android车载导航刷机包
  • 国家税务总局洛阳市分局
  • 增值税纳税申报时间
  • 中医药文化进校园活动
  • 什么是重点群体
  • 内蒙古一般纳税人查询网
  • 出口退税额与出口退税收入
  • 2021年十大慈善企业
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设