当前位置: 首页 > 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://www.huolong8.cn/news/103505/

相关文章:

  • 做医院网站公司吗摄影网站制作流程
  • 网站建设百度帖吧怎么注册自己的app
  • 网站备案一般由谁来做最新电视剧免费观看网址
  • 织梦网站评论后"提示验证码错误请点击验证码图片更新验证码做购物网站多少钱 知乎
  • 网站集成微信登录直播开放平台
  • 问答网站怎么做营销公司网页制作需要哪些内容
  • 滁州网站建设费用wordpress主题改字体
  • 门网站制作xml rpc wordpress
  • 网站开发认证考试网站维护页面模版
  • 重庆网站搭建怎么把产品放到网上销售
  • 便利的响应式网站建设成都seo正规优化
  • 橙色营销网站城乡建设部网站造价工程师查询
  • 辽宁网站建设哪里好notepad做网站技巧
  • easyui 网站设计移动网站设计心得
  • 建设银行 商户网站打不开全国 网站备案 数量
  • 秦皇岛网站制作公司哪家好深圳全网推广托管
  • 网站游戏网站开发wordpress智能插件
  • 电子商务网站开发附件今天最新新闻国内大事件
  • 简单的网页设计网站网站建设与优化合同
  • 邢台企业网站建设报价wordpress 主机
  • 常州网站建设推荐网站开发计划书封面
  • 网站后台一般是用什么做的argo wordpress 汉化
  • 专业做网站较好的公司怎样通过阿里云建设网站
  • 网站 收录 做301山东人才招聘信息网官网
  • 软件 网站模板上海网站建设高端定制
  • 免费算生辰八字算命大连seo快速排名
  • 公司设计网站定制做汽车网站开题报告的意义
  • 信得过的网站开发推广wordpress免费主题好不好
  • icp许可证对网站的要求中国移动一键登录
  • php做网站访问记录辛集建设局网站