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

江西省住房和城乡建设厅官方网站富阳网站建设 优帮云

江西省住房和城乡建设厅官方网站,富阳网站建设 优帮云,山东网站seo开发,90设计网站会员全站通与电商模板的区别编写思路#xff1a; 简单介绍构造函数介绍原型对象原型对象、实例的关系#xff0c;从而引出原型链的基本概念 原型链基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。 1. 什么是构造函数 构造函数本身跟普通函数一样#xff0c;也不存在定义构造函数…编写思路 简单介绍构造函数介绍原型对象原型对象、实例的关系从而引出原型链的基本概念 原型链基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。 1. 什么是构造函数 构造函数本身跟普通函数一样也不存在定义构造函数的特殊语法。唯一区别在于调用的方式不同任何函数只要通过new 操作符来调用都可以叫做构造函数。默认情况下构造函数的首字母大写不大写也没有问题主要是为了与普通函数区分。 2. 原型对象 创建一个新函数都会有一个prototype(原型)属性这个属性指向函数的原型对象。 在默认情况下所有原型对象都会自动获得一个constructor(构造函数)属性这个属性是一个指向prototype属性所在函数的指针(也就是构造函数)。创建一个自定义构造函数之后其原型对象默认只会取得constructor属性其他方法则会从Object继承而来的。 当调用构造函数创建一个新实例后该实例的内部将包含一个指针(内部属性)指向构造函数的原型对象。这个指针(内部属性)叫做[[Prototype]]可以通过_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方法。 图片展示上面代码中各个构造函数、原型、实例的关系 解释上面代码中的关系 根据前面知识知道构造函数中有一个prototype属性指向原型对象原型对象中有一个constructor属性指回原型对象所在的构造函数实例中有一个指针指向其构造函数的原型对象。根据这句话图中一部分的箭头(标号为1)指向很清楚的能解释。代码中将Person的实例对象赋值给了Student的原型对象而每个实例都有一个指向其构造函数的原型所以此时Student的原型中有一个指向Person原型对象的指针。 可以解释图中标号为2的箭头。在这里再提一下为什么Student的原型对象中会有getAge方法是因为定义getAge方法在修改Student原型对象之后。最后一句代码为什么会能打印出来因为当查找一个属性时会先在自身查找如果不存在则会再原型中查找虽然在Student的原型对象没有查找到但是其中又有一个指针指向另一个原型对象可以再次查找所以会找到。最后一层层的查找就变成了原型链。其实原型链是实例与原型之间的关系跟构造函数没有任何关系。 记住所有函数的默认原型都是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); // true5. 其他注意点 给原型添加方法一定要在替换原型语句之后子类型会覆盖超类型中的某个属性或方法。比如说定义一个原型链中存在的属性和方法在访问时只要访问到就会立马返回值。不能使用字面量给原型对象添加方法否则会使原型对象与之前的构造函数断了联系。 6. 问题 通过原型继承时原型实际上会变成另一个类型的实例。在创建子类型的实例时不能向超类型的构造函数传递参数。
http://www.w-s-a.com/news/336731/

相关文章:

  • 如何用网站做cpa交互比较好的网站
  • 一家只做特卖的网站wordpress修改模板教程
  • 与恶魔做交易的网站成都到西安高铁票价
  • 太原网站制作哪家便宜长春昆仑建设股份有限公司网站
  • 优质做网站价格设计手机商城网站建设
  • 高校网站建设制度无锡网站建设排名
  • 做网站的软件wd的叫啥无锡公司网站建设服务
  • 网站建设一般需要多久网站服务器基本要素有哪些
  • 大连开发区网站开发公司免费网站建设哪个好?
  • 关于建设门户网站的通知海曙区建设局网站
  • 韩国建设部网站温州企业网站制作
  • 苏州网站建设优化贵州网站建设lonwone
  • 网站建设与推广方案模板网站建设教程搭建浊贝湖南岚鸿给力
  • 网站建设内部下单流程图昆明网站制作公司
  • 手机网站焦点图在线外链推广
  • 做静态页面的网站中国建设银行河南省分行网站
  • 镇平县两学一做专题网站佛山家居网站全网营销
  • 做网站的需求wordpress图片怎么居中
  • 网站开发的技术流程图抖音seo排名优化软件
  • dedecms做电商网站得物app官方下载安装
  • python做网站教程微网站 举例
  • 百度喜欢什么样的网站如何引用网站上的资料做文献
  • 如何给网站添加网站地图军刀seo
  • 模板网站开发推广陈村大良网站建设
  • 建设工程网站单位名单广州微信网站建设效果
  • 网站开发选择框代码字节小程序开发教程
  • 杭州网站设计精选柚v米科技免费的简历制作
  • 网站域名 没有续费做外贸怎样上外国网站
  • 购物网站功能模块设计电子工程网站有哪些
  • 网站营销公司哪家好wordpress主题 破解主题