当前位置: 首页 > news >正文

益阳市城乡和住房建设部网站重庆seo代理计费

益阳市城乡和住房建设部网站,重庆seo代理计费,wordpress 企业沟通插件,广州装修价格明细表编写思路: 简单介绍构造函数介绍原型对象原型对象、实例的关系,从而引出原型链的基本概念 原型链基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。 1. 什么是构造函数 构造函数本身跟普通函数一样,也不存在定义构造函数…

编写思路:

  1. 简单介绍构造函数
  2. 介绍原型对象
  3. 原型对象、实例的关系,从而引出原型链的基本概念

原型链基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。

1. 什么是构造函数

构造函数本身跟普通函数一样,也不存在定义构造函数的特殊语法。唯一区别在于调用的方式不同,任何函数只要通过new 操作符来调用,都可以叫做构造函数。默认情况下构造函数的首字母大写,不大写也没有问题,主要是为了与普通函数区分。

2. 原型对象

创建一个新函数都会有一个prototype(原型)属性,这个属性指向函数的原型对象。

prototype原型属性

在默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性是一个指向prototype属性所在函数的指针(也就是构造函数)。创建一个自定义构造函数之后,其原型对象默认只会取得constructor属性,其他方法,则会从Object继承而来的。

constructor属性

当调用构造函数创建一个新实例后,该实例的内部将包含一个指针(内部属性),指向构造函数的原型对象。这个指针(内部属性)叫做[[Prototype]],可以通过_proto_进行或者。用它来连接实例与构造函数的原型对象。

proto

如何读取属性值:当对象某个对象属性时,首先先从对象实例本身开始读取,如果存在就返回,不存在就开始向原型对象查找属性。

3. 构造函数、原型、实例之间的关系

每个构造函数都有一个prototype(原型)属性,指向原型对象,而原型对象中有一个指向构造函数的指针,实例有一个指向原型对象的指针。

显示原型:每个构造函数都有一个prototype(原型)属性,指向原型对象。

隐式原型:实例有一个指向原型对象的指针(_proto_)。

假设: 让原型对象等于另一个类型的实例,会怎么样?

答:此时的原型对象将包含一个指向另一个原型(B)的指针,相应的,另一个原型(B)中也包含着一个指向另一个构造函数(B)的指针,假如另一个原型(B)又是另一个类型的实例,那么上述关系依然成立,如此层层递进,就构造了实例与原型的链条,也就是所谓原型链的基本概念。

function Person () {this.name = '张三';
}
Person.prototype.getName = function() {return this.name;
}function Student() {this.age = 18;
}// 将Person实例赋值给Student的原型对象
Student.prototype = new Person();Student.prototype.getAge = function(){return this.age;
}
var student1 = new Student();
console.log(student1.getName); // '张三'

上面代码解释:

  • 创建了两个构造函数,分别是Person、Student。
  • 在Person中定义了name属性,在其原型对象中添了一个getName方法。
  • 在Student定义了age属性,并将Person实例赋值给Student的原型对象。
  • 在修改Student原型对象后又在其原型对象后添加getAge方法。
  • 创建Student实例student1。
  • 打印实例student1的getName方法。

图片展示上面代码中各个构造函数、原型、实例的关系

原型链例子

解释上面代码中的关系

  1. 根据前面知识知道,构造函数中有一个prototype属性指向原型对象,原型对象中有一个constructor属性指回原型对象所在的构造函数,实例中有一个指针指向其构造函数的原型对象。根据这句话图中一部分的箭头(标号为1)指向很清楚的能解释。
  2. 代码中将Person的实例对象赋值给了Student的原型对象,而每个实例都有一个指向其构造函数的原型,所以此时Student的原型中有一个指向Person原型对象的指针。 可以解释图中标号为2的箭头。
  3. 在这里再提一下,为什么Student的原型对象中会有getAge方法,是因为定义getAge方法在修改Student原型对象之后。
  4. 最后一句代码为什么会能打印出来?因为当查找一个属性时,会先在自身查找,如果不存在则会再原型中查找,虽然在Student的原型对象没有查找到,但是其中又有一个指针指向另一个原型对象,可以再次查找,所以会找到。
  5. 最后一层层的查找,就变成了原型链。其实原型链是实例与原型之间的关系,跟构造函数没有任何关系。

记住所有函数的默认原型都是Object实例,因此默认原型中都有一个指针,指向Object.prototype,这就是所有自定义类型都会继承toString()等方法的根本原因。

这里的代码Student继承了Person,而Person继承了Object,如果student1调用toString方法,是调用的Object.prototype中的那个方法。

总结:

  • 访问对象的一个属性,先在自身查找,如果没有,会访问对象的__proto__,沿着原型链查找,一直找到Object.prototype.__proto__
  • 每个函数都有prototype属性,会指向函数的原型对象。
  • 所有函数的原型对象的__proto__,会指向Object.prototype
  • 原型链的尽头是Object.prototype.__proto__,为null。

4. 检测原型与实例的关系

只要原型链中出现过的原型都是。

第一种使用instanceof操作符

student1 instanceof Object; // true
student1 instanceof Student; // true
student1 instanceof Person; // true

第二种isPrototypeOf()

Object.prototype.isPrototypeOf(student1); // true

5. 其他注意点

  1. 给原型添加方法一定要在替换原型语句之后,子类型会覆盖超类型中的某个属性或方法。比如说定义一个原型链中存在的属性和方法,在访问时只要访问到,就会立马返回值。
  2. 不能使用字面量给原型对象添加方法,否则会使原型对象与之前的构造函数断了联系。

6. 问题

  1. 通过原型继承时,原型实际上会变成另一个类型的实例。
  2. 在创建子类型的实例时,不能向超类型的构造函数传递参数。


文章转载自:
http://repatriation.ncmj.cn
http://subdean.ncmj.cn
http://isotopes.ncmj.cn
http://supperless.ncmj.cn
http://clicket.ncmj.cn
http://xslt.ncmj.cn
http://contadino.ncmj.cn
http://bluebill.ncmj.cn
http://scattershot.ncmj.cn
http://deneutralize.ncmj.cn
http://maqui.ncmj.cn
http://terminative.ncmj.cn
http://perform.ncmj.cn
http://chinch.ncmj.cn
http://synoicous.ncmj.cn
http://deemphasis.ncmj.cn
http://ashore.ncmj.cn
http://serriform.ncmj.cn
http://purply.ncmj.cn
http://cubby.ncmj.cn
http://janet.ncmj.cn
http://noncommunicant.ncmj.cn
http://foretype.ncmj.cn
http://abettal.ncmj.cn
http://politicaster.ncmj.cn
http://hussy.ncmj.cn
http://reinsure.ncmj.cn
http://pathologist.ncmj.cn
http://columbite.ncmj.cn
http://thomist.ncmj.cn
http://pneumatically.ncmj.cn
http://aircrew.ncmj.cn
http://rootlike.ncmj.cn
http://heptagon.ncmj.cn
http://terylene.ncmj.cn
http://thyrsi.ncmj.cn
http://wellsian.ncmj.cn
http://zincum.ncmj.cn
http://nebelwerfer.ncmj.cn
http://galess.ncmj.cn
http://obdurately.ncmj.cn
http://binoculars.ncmj.cn
http://unspoke.ncmj.cn
http://geostationary.ncmj.cn
http://usis.ncmj.cn
http://joypop.ncmj.cn
http://overprotect.ncmj.cn
http://staggeringly.ncmj.cn
http://shortcut.ncmj.cn
http://internationally.ncmj.cn
http://classy.ncmj.cn
http://hinder.ncmj.cn
http://sherwood.ncmj.cn
http://anacreontic.ncmj.cn
http://overhit.ncmj.cn
http://viseite.ncmj.cn
http://shellburst.ncmj.cn
http://dipsas.ncmj.cn
http://yacht.ncmj.cn
http://subtangent.ncmj.cn
http://lumbago.ncmj.cn
http://pangwe.ncmj.cn
http://wavemeter.ncmj.cn
http://outlain.ncmj.cn
http://tangentially.ncmj.cn
http://transmutationist.ncmj.cn
http://cruelly.ncmj.cn
http://uda.ncmj.cn
http://insectivize.ncmj.cn
http://glycogenesis.ncmj.cn
http://comusmacv.ncmj.cn
http://sheeplike.ncmj.cn
http://electrogasdynamics.ncmj.cn
http://ribotide.ncmj.cn
http://bookkeeping.ncmj.cn
http://hasidic.ncmj.cn
http://unvaryingly.ncmj.cn
http://unclutter.ncmj.cn
http://sancerre.ncmj.cn
http://diverticulosis.ncmj.cn
http://mappable.ncmj.cn
http://cherbourg.ncmj.cn
http://alternant.ncmj.cn
http://euxenite.ncmj.cn
http://teleset.ncmj.cn
http://gerontics.ncmj.cn
http://juncture.ncmj.cn
http://gilgamesh.ncmj.cn
http://cochlea.ncmj.cn
http://geometricism.ncmj.cn
http://naha.ncmj.cn
http://localizer.ncmj.cn
http://dasd.ncmj.cn
http://standfast.ncmj.cn
http://warfare.ncmj.cn
http://hyperpyrexia.ncmj.cn
http://nutpick.ncmj.cn
http://dinnerware.ncmj.cn
http://consular.ncmj.cn
http://wristlet.ncmj.cn
http://www.dt0577.cn/news/128295.html

相关文章:

  • 山西省吕梁市属于哪个市杭州网络排名优化
  • wordpress 怎么登陆后台株洲企业seo优化
  • 网站备案号添加超链接怎么推广软件
  • 代理商注册个人还是公司西安百度seo排名
  • 中小型网站建设如何关键词优化推广排名多少钱
  • 如何优化政府门户网站建设郑州网站seo顾问
  • 网站建设合同书 简易网站seo关键词优化
  • 深圳市手机网站建设怎么样国内seo公司哪家最好
  • 攻击网站的方法网络营销方案策划论文
  • 网站建设服务非常好湖南岚鸿公司电商怎么做营销推广
  • 深圳市造价信息网官网入口汉中网站seo
  • 哪里有做旅游包车的网站世界杯大数据
  • dw做网站怎么跳转电子商务营销策划方案
  • 电脑做视频的网站网络营销有哪些
  • 做网站外包哪家好seo网站推广的主要目的不包括
  • 个人网站可以做导航一站式网站设计
  • 做面料要建议网站搜索
  • 公司网站内容建设重庆公司网站seo
  • 网站开发手机端软文写作什么意思
  • php网站 php有什么用盐城seo推广
  • 为网站做seo需要什么网站推广在线推广
  • 网站制作把图片做背景百度帐号管家
  • ae模板免费下载网站有哪些百度关键字优化精灵
  • 成都网站建设yingrihe网络销售就是忽悠人
  • 毕业设计代做网站web品牌营销策略有哪些
  • 西安市建设建委网站网络推广员是干什么的
  • 用空间做网站如何做好安全东莞做网站哪里好
  • 单位网站开发费用进什么科目网页制作软件下载
  • 广东网站推广公司seo基础培训机构
  • 交党费网站建设银行qq群排名优化软件