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

北京网站建设公司册wordpress 多媒体管理系统

北京网站建设公司册,wordpress 多媒体管理系统,网站生成静态页面工具,wordpress 评论 html代码理解原型的几个关键点#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.zqtcl.cn/news/329096/

相关文章:

  • 网站导购话术怎么做免费的产品图片网站
  • 网站设计外文文献建建设网站公司
  • 打开网站说建设中是什么问题网站开发收税
  • 海口建设厅网站grimhelm wordpress
  • 如何快速提升网站pr淮北房产网
  • 微网站和微信广州营销型网站建设团队
  • 企业网站制作托管微信建站网站
  • h5网站如何做排名济南网站建设选聚搜网络
  • 网站建设 手机wordpress 仿煎蛋主题
  • 织梦可以仿所有网站吗电子商务网站建设臧良运课后答案
  • 怎样创建个人购物网站wordpress没有外观
  • 衡水手机网站建设公司计算机大专学历有用吗
  • 有哪些网站做的很好桐乡市建设局官方网站
  • 做公众号和网站一样吗免费正能量网站下载ww
  • 使用帝国做软件下载网站源码顺义区做网站的公司
  • 网站用什么颜色成都网站建设公司服务
  • 重庆手机网站方案设计凡科建站网站怎么保存发给别人
  • 北京住房建设官方网站xampp wordpress服务器
  • 卖衣服的网站建设素材网站免费短视频
  • 萍乡网站建设哪家公司好搜索引擎推广预算
  • 如何做网站不容易被攻击网站定位策划书
  • 自己做网站去哪买服务器多说wordpress
  • 网站排名突然没有了网站开发背景图
  • 比较容易做流量的网站设计模板素材网站
  • 电商网站建设 网站定制开发兰州展柜公司网站建设
  • 临沂城乡建设管理局网站腾讯体育
  • 一个空间怎么放两个网站ps个人网站首页怎么制作
  • 云南通耀建设工程有限公司网站国际购物网站平台有哪些
  • 网站建设外包服务上海网站建设公司怎么分辨好坏
  • 建筑类企业网站模板下载微信搜索推广