当前位置: 首页 > news >正文 北京中国建设工程造价管理协会网站网站模板前台后台 news 2025/10/21 15:04:01 北京中国建设工程造价管理协会网站,网站模板前台后台,网站收录有什么用,深圳网站建设培训学校JavaScript中原型链(proto)与原型(prototype) 在JavaScript中#xff0c;理解原型链#xff08;__proto__#xff09;和原型#xff08;prototype#xff09;对于深入掌握面向对象编程至关重要。本文将通过示例代码#xff0c;详细解析__proto__和prototype之间的关系理解原型链__proto__和原型prototype对于深入掌握面向对象编程至关重要。本文将通过示例代码详细解析__proto__和prototype之间的关系以及它们在对象和构造函数之间的作用。 一、基本概念 1. 构造函数与实例对象 构造函数在JavaScript中函数可以作为构造函数使用通过new关键字创建实例对象。实例对象由构造函数创建的对象继承了构造函数的属性和方法。 2. 原型prototype prototype每个函数包括构造函数都有一个prototype属性指向一个对象这个对象被称为原型对象。原型对象存储共享的属性和方法供所有实例对象访问。 3. 原型链__proto__ proto每个对象都有一个__proto__属性指向创建该对象的构造函数的原型对象。原型链通过__proto__属性将对象、构造函数和原型对象连接起来形成一个链式结构。 二、示例代码解析 下面通过一段示例代码逐步解析__proto__和prototype之间的关系。 function Person(name, age){this.name name;this.age age; }const person new Person(Tom, 18);// 构造函数的prototype就是实例对象的__proto__ console.log(Person.prototype person.__proto__); // true// 实例对象的constructor指向构造函数 console.log(person.constructor Person); // true// 实例对象的__proto__对象上的constructor指向的又是Person构造函数 console.log(person.__proto__.constructor Person); // true// 实例对象的__proto__对象的__proto__指向的是Object构造函数的prototype console.log(person.__proto__.__proto__ Object.prototype); // true// 每一个构造函数也是一个对象所以也都有__proto__属性指向的是Function构造函数的prototype console.log(Person.__proto__ Function.prototype); // true// Function构造函数的prototype的constructor指向Function构造函数 console.log(Function.prototype.constructor Function); // true// Function的prototype的__proto__指向Object的prototype console.log(Function.prototype.__proto__ Object.prototype); // true// 因为所有构造函数的__proto__都是指向Function的prototype所以Function构造函数的prototype和__proto__是相等的 console.log(Function.__proto__ Function.prototype); // true1. 实例对象与构造函数的关系 console.log(Person.prototype person.__proto__); // true解析 Person.prototype是构造函数Person的原型对象。person.__proto__是实例对象person的原型指向Person.prototype。因此Person.prototype person.__proto__返回true。 2. 实例对象的constructor属性 console.log(person.constructor Person); // true解析 实例对象person的constructor属性指向其构造函数Person。因此person.constructor Person返回true。 3. 原型对象的constructor属性 console.log(person.__proto__.constructor Person); // true解析 person.__proto__是Person.prototype它有一个constructor属性指向构造函数Person。因此person.__proto__.constructor Person返回true。 4. 原型链向上查找 console.log(person.__proto__.__proto__ Object.prototype); // true解析 person.__proto__是Person.prototype。Person.prototype.__proto__指向Object.prototype。因此person.__proto__.__proto__ Object.prototype返回true。 5. 构造函数也是对象 console.log(Person.__proto__ Function.prototype); // true解析 构造函数Person本身是一个函数对象所以它的__proto__属性指向Function.prototype。因此Person.__proto__ Function.prototype返回true。 6. Function构造函数的关系 console.log(Function.prototype.constructor Function); // true console.log(Function.prototype.__proto__ Object.prototype); // true console.log(Function.__proto__ Function.prototype); // true解析 Function.prototype是Function构造函数的原型对象。Function.prototype.constructor指向Function自身。Function.prototype.__proto__指向Object.prototype因为函数也是对象。Function.__proto__指向Function.prototype因为Function也是函数是自己的构造函数。因此上述三个console.log均返回true。 三、原型链查找属性的过程 console.log(person.__proto__); // Person {} console.log(person.__proto__.__proto__); // Object {} console.log(person.__proto__.__proto__.__proto__); // null解析 person.__proto__是Person.prototype。person.__proto__.__proto__是Object.prototype。person.__proto__.__proto__.__proto__为null表示原型链的顶端。 四、总结 1. 关于__proto__和prototype __proto__ 是每个对象都有的内置属性指向其构造函数的原型对象。用于实现对象的原型链在查找属性时如果对象自身没有会沿着__proto__向上查找。 prototype 是构造函数的属性指向原型对象。原型对象上定义的方法和属性会被构造函数的所有实例共享。 2. 关于构造函数和实例对象 实例对象的__proto__ 指向构造函数的prototype属性。 实例对象的constructor 通过__proto__找到原型对象原型对象的constructor指向构造函数。 构造函数的__proto__ 因为构造函数本身是一个函数对象所以它的__proto__指向Function.prototype。 3. 关于原型链的查找过程 当访问对象的属性时JavaScript引擎会先查找对象自身的属性。如果找不到会沿着__proto__属性指向的原型对象继续查找。这个过程会一直持续直到找到属性或到达原型链的顶端null。 4. 关于Function和Object Function构造函数 是所有函数的构造函数包括Function自身。Function.__proto__ Function.prototype因为Function是一个函数其__proto__指向Function.prototype。 Object构造函数 是所有对象的构造函数包括Function.prototype。Function.prototype.__proto__ Object.prototype。 五、深入思考 为什么Function.__proto__ Function.prototype 因为Function是所有函数的构造函数包括它自己。Function作为一个函数对象其__proto__指向Function.prototype。 为什么Object.__proto__ Function.prototype Object是一个函数构造函数所以其__proto__指向Function.prototype。 为什么Function.prototype.__proto__ Object.prototype Function.prototype是一个对象因此其__proto__指向Object.prototype。 文章转载自: http://www.morning.rdxp.cn.gov.cn.rdxp.cn http://www.morning.nzmqn.cn.gov.cn.nzmqn.cn http://www.morning.nj-ruike.cn.gov.cn.nj-ruike.cn http://www.morning.tcxk.cn.gov.cn.tcxk.cn http://www.morning.ktmbr.cn.gov.cn.ktmbr.cn http://www.morning.trsfm.cn.gov.cn.trsfm.cn http://www.morning.ytrbq.cn.gov.cn.ytrbq.cn http://www.morning.wrtpk.cn.gov.cn.wrtpk.cn http://www.morning.cwskn.cn.gov.cn.cwskn.cn http://www.morning.jypsm.cn.gov.cn.jypsm.cn http://www.morning.rdgb.cn.gov.cn.rdgb.cn http://www.morning.geledi.com.gov.cn.geledi.com http://www.morning.mlpmf.cn.gov.cn.mlpmf.cn http://www.morning.wdskl.cn.gov.cn.wdskl.cn http://www.morning.qnypp.cn.gov.cn.qnypp.cn http://www.morning.bswnf.cn.gov.cn.bswnf.cn http://www.morning.mzrqj.cn.gov.cn.mzrqj.cn http://www.morning.krhkb.cn.gov.cn.krhkb.cn http://www.morning.hlshn.cn.gov.cn.hlshn.cn http://www.morning.zrgdd.cn.gov.cn.zrgdd.cn http://www.morning.mjxgs.cn.gov.cn.mjxgs.cn http://www.morning.gpkjx.cn.gov.cn.gpkjx.cn http://www.morning.gcxfh.cn.gov.cn.gcxfh.cn http://www.morning.zpxwg.cn.gov.cn.zpxwg.cn http://www.morning.xkjrq.cn.gov.cn.xkjrq.cn http://www.morning.jcxzq.cn.gov.cn.jcxzq.cn http://www.morning.gpkjx.cn.gov.cn.gpkjx.cn http://www.morning.wlstn.cn.gov.cn.wlstn.cn http://www.morning.lmcrc.cn.gov.cn.lmcrc.cn http://www.morning.supera.com.cn.gov.cn.supera.com.cn http://www.morning.sxcwc.cn.gov.cn.sxcwc.cn http://www.morning.plhhd.cn.gov.cn.plhhd.cn http://www.morning.easiuse.com.gov.cn.easiuse.com http://www.morning.fhddr.cn.gov.cn.fhddr.cn http://www.morning.nrftd.cn.gov.cn.nrftd.cn http://www.morning.rwnx.cn.gov.cn.rwnx.cn http://www.morning.cgtrz.cn.gov.cn.cgtrz.cn http://www.morning.brbnc.cn.gov.cn.brbnc.cn http://www.morning.wngpq.cn.gov.cn.wngpq.cn http://www.morning.nhzzn.cn.gov.cn.nhzzn.cn http://www.morning.tnkwj.cn.gov.cn.tnkwj.cn http://www.morning.zpdjh.cn.gov.cn.zpdjh.cn http://www.morning.hdrsr.cn.gov.cn.hdrsr.cn http://www.morning.kgmkl.cn.gov.cn.kgmkl.cn http://www.morning.pudejun.com.gov.cn.pudejun.com http://www.morning.zpqlf.cn.gov.cn.zpqlf.cn http://www.morning.wmcng.cn.gov.cn.wmcng.cn http://www.morning.nswcw.cn.gov.cn.nswcw.cn http://www.morning.ymhjb.cn.gov.cn.ymhjb.cn http://www.morning.pngdc.cn.gov.cn.pngdc.cn http://www.morning.nkyqh.cn.gov.cn.nkyqh.cn http://www.morning.krgjc.cn.gov.cn.krgjc.cn http://www.morning.lqqqh.cn.gov.cn.lqqqh.cn http://www.morning.c7495.cn.gov.cn.c7495.cn http://www.morning.rdnpg.cn.gov.cn.rdnpg.cn http://www.morning.zgztn.cn.gov.cn.zgztn.cn http://www.morning.zpxwg.cn.gov.cn.zpxwg.cn http://www.morning.ffbl.cn.gov.cn.ffbl.cn http://www.morning.jjhng.cn.gov.cn.jjhng.cn http://www.morning.xnhnl.cn.gov.cn.xnhnl.cn http://www.morning.qkzdc.cn.gov.cn.qkzdc.cn http://www.morning.hlnrj.cn.gov.cn.hlnrj.cn http://www.morning.kpcxj.cn.gov.cn.kpcxj.cn http://www.morning.kpnpd.cn.gov.cn.kpnpd.cn http://www.morning.ckwxs.cn.gov.cn.ckwxs.cn http://www.morning.cmfkp.cn.gov.cn.cmfkp.cn http://www.morning.deupp.com.gov.cn.deupp.com http://www.morning.yprjy.cn.gov.cn.yprjy.cn http://www.morning.bgdk.cn.gov.cn.bgdk.cn http://www.morning.yrbqy.cn.gov.cn.yrbqy.cn http://www.morning.ymjgx.cn.gov.cn.ymjgx.cn http://www.morning.lrdzb.cn.gov.cn.lrdzb.cn http://www.morning.dbphz.cn.gov.cn.dbphz.cn http://www.morning.mxlmn.cn.gov.cn.mxlmn.cn http://www.morning.wwjft.cn.gov.cn.wwjft.cn http://www.morning.cznsq.cn.gov.cn.cznsq.cn http://www.morning.ldgqh.cn.gov.cn.ldgqh.cn http://www.morning.mmjqk.cn.gov.cn.mmjqk.cn http://www.morning.kpmxn.cn.gov.cn.kpmxn.cn http://www.morning.gqfjb.cn.gov.cn.gqfjb.cn 查看全文 http://www.tj-hxxt.cn/news/237138.html 相关文章: 那些网站专门做游戏辅助的网站建设属于设备吗 网站如何伪静态知名网站建设加盟合作 做排名出租网站邯郸做小程序的网络公司 网站怎样盗链图片网络营销推广策划方案 做托福的网站大连网站制作.net 佛山网站建设公司哪家性价比高呼家楼做网站的公司哪家好 济南专业做公司网站的机构公司注册资金实缴后多久可以取出 大连六兄弟网站建设深圳免费网站制作哪个好 深圳做网站的公司有没有便宜的注册代理 网站运营维护的基本工作多用户自助建站 成都市成华区建设路商务中心网站怎么用手机开发app wordpress网站工具栏wordpress自定义分类无法显示 建设行业公司网站公明做企业网站 玮科网站建设知道抖音视频是怎么做的网站嘛 网站鼠标悬停动态效果用模块做网站 哪里有网站制作平台wordpress dopt 互联网站开发python 网站开发 pdf qq排名优化网站免费查企业电话网站 个人如果做网站赚钱吗成都市建设领域网站咨询电话 浙江省住房和城乡建设厅网站查询WordPress 整个网站导出 定制旅游网站有哪些网站开发软件三剑客 jsp网站首页怎么做常见网站图标 网泰网站建设手机网站建设图 怎么建设淘宝客网站中小企业名录 企业门户网站国内外研究现状用wordpress建立专业网站视频教程 网站的侧边栏怎么做近期的新新闻 网站建设步骤及分工互联网技术英文 dw网站模板免费下载哪些做展架图的网站好 网吧网站怎么做的园林绿化 网站备案系统源码做seo网站图片怎么优化