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

网站开发目的和意义嵌入式培训宣传

网站开发目的和意义,嵌入式培训宣传,北京网站建设知名公司排名,网站建设文化包括哪些理解原型的几个关键点#xff1a; 1、所有的引用类型#xff08;数组、函数、对象#xff09;可以自由扩展属性#xff08;除null以外#xff09;; 2、所有的引用类型#xff08;对象#xff09;都有一个’_ _ proto_ _属性(也叫隐式原型#xff0c;它是一个普通的对…理解原型的几个关键点 1、所有的引用类型数组、函数、对象可以自由扩展属性除null以外; 2、所有的引用类型对象都有一个’_ _ proto_ _属性(也叫隐式原型它是一个普通的对象)指向原型对象 3、所有的函数都有一个’prototype’属性(这也叫显式原型它也是一个普通的对象该对象就是函数的原型对象对象中包含所有实例对象可以共享的属性和方法)。’prototype’属性是函数独有的任何函数在创建的时候其实会默认同时创建该函数的prototype对象; 4、所有引用类型它的’_ _ proto_ _属性指向它的构造函数的’prototype’属性所以  函数._ _ proto_ _ function.prototype; 5、当试图得到一个对象的属性时如果这个对象本身不存在这个属性那么就会去它的’_ _ proto_ _属性(也就是它的构造函数的’prototype’属性)中去寻找。 6、constructor属性也是对象才拥有的指向该对象的构造函数。函数创建的对象.__proto__ 该函数.prototype该函数.prototype.constructor该函数本身故通过函数创建的对象即使自己没有constructor属性它也能通过__proto__找到对应的constructor所以任何对象最终都可以找到其构造函数null如果当成对象的话将null除外   原型 先来看一个原型的例子。 //这是一个构造函数function Foo(name,age){this.namename;this.ageage;}/*根据要点3所有的函数都有一个prototype属性这个属性是一个对象再根据要点1所有的对象可以自由扩展属性于是就有了以下写法*/Foo.prototype{// prototype对象里面又有其他的属性showName:function(){console.log(Im this.name);//this是什么要看执行的时候谁调用了这个函数},showAge:function(){console.log(And Im this.age);//this是什么要看执行的时候谁调用了这个函数}}var fnnew Foo(小明,19)/*当试图得到一个对象的属性时如果这个对象本身不存在这个属性那么就会去它构造函数的prototype属性中去找*/fn.showName(); //Im 小明fn.showAge(); //And Im 19这就是原型很好理解。那为什么要使用原型呢 试想如果我们要通过Foo()来创建很多很多个对象如果我们是这样子写的话 function Foo(name,age){this.namename;this.ageage;this.showNamefunction(){console.log(Im this.name);}this.showAgefunction(){console.log(And Im this.age);}}那么我们创建出来的每一个对象里面都有showName和showAge方法这样就会占用很多的资源。 而通过原型来实现的话只需要在构造函数里面给属性赋值而把方法写在Foo.prototype属性(这个属性是唯一的)里面。这样每个对象都可以使用prototype属性里面的showName、showAge方法并且节省了不少的资源。   原型链 理解了原型那么原型链就更好理解了。 #####下面这段话可以帮助理解原型链 根据要点5当试图得到一个对象的属性时如果这个对象本身不存在这个属性那么就会去它构造函数的’prototype’属性中去寻找。那又因为’prototype’属性是一个对象所以它也有一个’_ _ proto_ _属性。 // 构造函数function Foo(name,age){this.namename;this.ageage;}Object.prototype.toStringfunction(){//this是什么要看执行的时候谁调用了这个函数。console.log(Im this.name And Im this.age);}var fnnew Foo(小明,19);fn.toString(); //Im 小明 And Im 19console.log(fn.toStringFoo.prototype.__proto__.toString); //trueconsole.log(fn.__proto__ Foo.prototype)//trueconsole.log(Foo.prototype.__proto__Object.prototype)//trueconsole.log(Object.prototype.__proto__null)//true是不是觉得有点奇怪我们来分析一下。 首先fn的构造函数是Foo()。所以fn._ _ proto _ _ Foo.prototype 又因为Foo.prototype是一个普通的对象它的构造函数是Object所以Foo.prototype._ _ proto _ _ Object.prototype 通过上面的代码我们知道这个toString()方法是在Object.prototype里面的当调用这个对象的本身并不存在的方法时它会一层一层地往上去找一直到null为止。 所以当fn调用toString()时JS发现fn中没有这个方法于是它就去Foo.prototype中去找发现还是没有这个方法然后就去Object.prototype中去找找到了就调用Object.prototype中的toString()方法。 __proto__属性的作用就是当访问一个对象的属性时如果该对象内部不存在这个属性那么就会去它的__proto__属性所指向的那个对象父对象里找一直找直到__proto__属性的终点null再往上找就相当于在null上取值会报错。通过__proto__属性将对象连接起来的这条链路即我们所谓的原型链。   另外在使用原型的时候一般推荐将需要扩展的方法写在构造函数的prototype属性中避免写在_ _ proto _ _属性里面。   总结 当所有的实例对象都需要共享属性和方法时通过原型来实现就是将属性方法放在实例对象的构造函数的prototype属性中该属性值就是原型对象包含共享属性和方法  访问一个对象的属性时先在基本属性中查找如果没有再沿着__proto__这条链向上找这就是原型链。根据原型链可以确定继承关系。由于所有的对象的原型链都会找到Object.prototype因此所有的对象都会有Object.prototype的方法。这就是所谓的“继承”。对象引用类型通过instanceof来判断。版权声明文章内容主要综合来自链接处 https://blog.csdn.net/qq_36996271/article/details/82527256 https://blog.csdn.net/cc18868876837/article/details/81211729
http://wiki.neutronadmin.com/news/103505/

相关文章:

  • 网站建站建设哪家好黄冈app下载推广平台
  • htm5网站建设浙江省城乡建设监方网站
  • 杭州网站关键词推广网站开发文档撰写模板
  • 关于外贸公司的网站建设工程其它费计算网站
  • 网站前台怎么套用织梦后台万网如何上传静态网站
  • 贸易公司如何做网站只做绿色食品的网站
  • 一级域名的网站怎么做国内老牌的网站制作
  • 网站标题怎么设置免费制作主图的网站
  • net网站开发框架网络营销解释
  • 深圳企业网站公司wordpress侧边栏二级菜单
  • 网站建设完工报告网站开发晋升空间 路径
  • 网站模板 phpcmsiis7创建网站
  • 沧州网站域名注册服务公司网站关键词更改
  • 仿99健康网网站源码网站美化教程下载
  • 美的集团网站建设团购网站短信平台
  • 网站建设费用包括哪些方面做网站上面图片的软件
  • 合肥住房城乡建设部的网站智慧团建网站登录平台pc端
  • 网站建设 昆明 价格wordpress插件浏览权限
  • 可以看设计的网站有哪些网站搭建培训学校
  • 东莞设计网站服务的公司达内前端
  • 西安易码建站网站工作室和网络公司
  • 手机网站安全证书过期怎么处理西安专业做网站的公司
  • 简历做的很棒的网站1688网站一起做网店
  • 企业网站备案好不好郑州的建设网站有哪些手续费
  • 广州优化网站建设怎么做网站安全检测
  • 催收网站开发教师进修学校网站建设方案
  • 郑州通告最新seo是什么意思啊视频教程
  • 网站设计 验收标准淘宝网站建设的目标什么
  • 网站开发html书籍下载有什么网站用名字做图片
  • 做问卷美观的网站推介网手机版