游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

JavaScript原型链prototypeproto详解

  1、背景
  Javascript的继承模型、原型链等等概念比较晦涩难懂,很多人过去在使用Javascript的时候并没有刻意去搞明白其中的原理,今天笔者一步一步分析一下JavaScript中的继承、原型链、prototype、proto。笔者并不打算写过多的文字解释原理,而是希望将原理总结成代码片段更便于理解。
  2、JavaScript继承是如何实现的?
  你只需要知道JavaScript是通过名叫原型链的东西来实现继承的,依托于constructor。prototype属性(构造函数的prototype属性)即可。你现在并不需要明白原型链是什么东西我会在下面一步一步详解。
  3、javascript通过prototype实现继承
  functionAnimal(){this。echofunction(){console。log(IamAnAnimal。。。。)};this。value1;}functionMonkey(){}将构造函数Monkey的prototype属性设置为一个Animal的对象,Monkey就拥有了Animal的所有属性和方法Monkey。prototypenewAnimal();newMonkey()。echo();console。log(newMonkey()。value);
  4、prototype、proto解析区别
  我们知道在JavaScript中我们可以通过new创建一个对象,我们是根据一个函数模板创建一个对象。也就是说如下代码
  Animal函数便是函数模板,类似Cjava等的类的概念,然而newAnimal出来的就是对象的概念。
  functionAnimal(){this。echofunction(){console。log(IamAnAnimal。。。。)};this。value1;}
  代码1
  proto属性是对象的一个属性,在ECMAScript规范中是不暴露的,但是有些浏览器可以访问到,对象的这个属性值就是函数模板的prototype值,
  不知道这样说是不是不容易理解,换一个方式吧:对象。proro函数模板。prototype,前提这个对象时这个函数new出来的。
  5、通过设置上下文this的方式实现继承
  我们都知道函数中在可以使用this引用当前上下文,下面这段代码就是通过设置构造函数的上下文this的方式实现了继承,下面我给出两段代码分别仔细阅读下,琢磨一下代码所表达的意思。
  代码1
  functionAnimal(){this。echofunction(){console。log(IamAnAnimal。。。。)};this。value1;}创建一个字面对象三个方式都创建了对象varobj1newfunction(){};varobj2{};varobj3〔〕分别将三个对象设置成Animal构造函数的上下文并且调用Animal函数,那么这个时候Animal函数中的thisobj1,obj2,obj3Animal。call(obj1);Animal。call(obj2);Animal。call(obj3);obj1。echo();obj2。echo();obj3。echo();
  代码2
  functionAnimal(){this。echofunction(){console。log(IamAnAnimal。。。。)};this。value1;}functionMonkey(){Animal。call(this);}newMonkey()。echo();6、什么是原型链?
  这个概念其实比较好理解,如果我们调用一个对象的一个方法,如何这个方法不存在那么就回去他的proto寻找,如果找到直接返回,如果没找到那么继续proto。proto中寻找,就像如下代码这样,B是如何找到value的。
  代码1
  varA{value:1};varB{};B。protoA;console。log(B。value);
  functionA(){this。value1;}functionB(){}B。prototypenewA();console。log(newB()。proto。value);
  代码3
  functionA(){this。value1;}functionB(){}B。prototypenewA();console。log(newB()。value);
  7、总结一些关于JavaScript继承、类型判断、prototype的用法
  判断一个字面定义数组的原型的类型,输出是〔objectArray〕Object。prototype。toString。call(〔1〕。proto)
  下面演示了数组和对象的关系,原型链〔〕ArrayObject下面返回true
  Object。prototype〔〕。proto。proto
  〔〕。proto。proto。toString()
  instanceofJavaScriptMDN
  Object。prototype。toString(〔〕)
  通过call调用toString方法并且设置上下文获取真实类型
  console。log(Object。prototype。toString。call(〔〕));console。log(Object。prototype。toString。call(x));console。log(Object。prototype。toString。call(x));console。log(〔〕。proto。proto。toString。call(xig));console。log(〔〕。proto。proto。toString。call(null));
  输出结果

艾瑞超级沙龙电商数据洞察实操训练营在电商蓬勃发展的今天,对于电商人群与数据的解读成为了品牌主每天面临的课题。平台方和第三方积极打造越来越多的工具助力品牌方做更深度的洞察。作为中国新商业的观察者,艾瑞咨询一……王传福太自负爱吹牛,还是尹同跃太谦卑和懦弱?引言:遥想当年,奇瑞也曾是老牌自主一哥,为何在近些年来不断被友军反超、且差距越拉越大?我想,一个性格偏保守、也有些过于的谨小慎微的掌门人,难辞其咎。面对合资车企,自主品牌……ColorOS官宣ColorOSFlymeMIUI究极缝合怪快一个月都没更新了,感觉做头条好难啊,用心做内容都没人看〔流泪〕〔流泪〕〔流泪〕ColorOS官宣了,明天详细说,盲猜是中午12点〔吐舌〕之前战战说C12仿佛……18小时超长续航!仅重1。3kg的ROG幻13是如何做到的?作为全能本概念的旗舰机型,幻13不止传承了ROG的性能基因,更在续航、外观等多维度推动全场景适用、多应用满足的全能体验。1月13日上架的ROG幻13就是冲着轻薄全能本而来,强悍……你觉得失恋痛苦,或许是你没在意一些前提一种有人拍了一段视频,说他想体验爱情,被爱情伤害,但因为他很丑,所以没有机会。虽然起点很有趣,但看完后我觉得有点特别。因为拍视频的人真的很丑,所以他不只是为了搞笑,……华为AI音箱2e,一款适合儿童使用的AI智能音箱9月23日,华为发布了nova9系列手机,此次还发布了一个新品音箱华为AI音箱2e,不管是从产品的外观还在使用功能上,都是一款非常适合小朋友使用的AI音箱。首先,它有一个……卓文科技物联网断路器生产项目获评省新基建重点项目近日,山东省发展和改革委员会下发《关于印发全省新基建重点项目名单的通知》,山东卓文信息科技有限公司物联网通讯模组电路板和电力物联网断路器生产项目获评省发改委全省新基建重点项目。……该多久做次健康检查该多久做次健康检查美F何时该做健康检查,可能不同的人会有不同的观点,有的人认为做健康检查的次数越名越好,最好610个月检查一次:有的人可能会认为34年做次就足够了。其实,……教育得有店小程序,轻松解决获客难成本高中国的父母一直秉承着一个信念不能让孩子输在起跑线上,由此也推动了教育行业的发展,而在市场一片火爆的同时,教育培训行业的竞争也在日渐激烈,很多教育机构都在面临获客难、获客成本高的……手机平板二合一!微软发布双屏新品10月2日,微软在发布会上推出SurfaceNeo和SurfaceDuo。SurfaceNeo:Surface多屏设备,搭载Windows10X,可360度旋转,由2个9……是谁带起了涡轮三缸机的风潮,国人为什么说起三缸发动机就抗拒?三年前,一阵三缸小排量涡轮增压风突然冒起,不少车企在走量的车型上用上了三缸机。没错,在现在的技术来说,三缸机的性能,能耗都能与一般的四缸机器相接近。已经不再是90年代初,那些三……引领品牌向上,长安欧尚X7PLUS上海车展全球首秀4月19日,第十九届上海国际汽车展览会盛大启幕。长安欧尚首款PLUS旗舰产品欧尚X7PLUS全球首发亮相,至此,长安欧尚正式开启PLUS时代,作为新起点的第一步,长安欧尚首款P……
曝AMDRX6600显卡本周上市国行价格2499元AMD有段时间没有更新显卡了。来自ChannelGate视博合聚的爆料称,AMDRX6600显卡的发布时间敲定在10月13日晚21点,官方指导价2499元,比RX6600……大家看看这是啥问题?一、正常使用的一台电脑,昨天晚上关机之后,cpu、电源风扇依然在转,半天关不上,就直接拔电了,重新开机就完全不上电了,没有任何动静、所有风扇不转。主板之前轻微进过水、有痕迹,但……下一代旗舰芯片曝光!联发科发力高端市场,4nm台积电工艺如今,全球智能手机行业中,仅有几家厂商具备自研移动处理器的实力。比如,苹果、高通、三星、华为、联发科等。尽管近两年国产自研芯片紫光展锐已经开始有所好转,但是与上述五家高科技企业……泛华数字化触发建筑装饰行业六大变革在全球新一轮技术革命的推动下,特别是互联网、大数据、云计算、区块链等数字科技的创新,正引发一系列产业跨越式革命,并重构生产关系和生产力。泛华集团建设有限公司(以下简称泛华)认为……俄罗斯为什么不担心芯片和光刻机的问题?众所周知,如今的汽车,飞机等交通工具;手机,电脑,基站等通讯工具,都离不开芯片。当然,芯片也可以称为广义的CPU。也就是说,芯片已经涉及我们生活中的方方面面。不仅如此,芯……浅谈SpringDataElasticSearchSpringDataSpringData帮助我们避免了一些样板式代码,比如我们要定义一个接口,可以直接继承接口ElasticSearchRepository接口,这样Sp……北京知产法院驳回腾讯扫黑风暴禁令申请近日,北京知识产权法院裁定驳回了腾讯提交的《扫黑风暴》诉讼禁令申请。法院认为,抖音已主动删除了涉嫌侵权的视频,并无必要采取行为保全措施。如果不适当地采取或扩大行为保全范围,不仅……intel酷睿i7到底值不值得买?看完这篇大家应该就会明白了农企努力啦,你闷别黑它;卡秒英特尔,U秒英伟达;不买它产品,脑子进水啦?你说他不行,你行你上啊!AMD用了几年的时间把锐龙做成了翻身龙,很多的伪A饭都莫名其妙的开始摇旗呐……iPhone12又要换颜色来圈钱了?苹果急于寻求新商业故事文荀诗林不知道苹果已经淡出大家的视野多久了。4月14日的时候,苹果终于官宣其春季新品发布会将于4月20日举行,也就是北京时间4月21日凌晨1点。从最初的爆料3月23……全能的小清新魅族18Pro真机测评体验魅族18Pro,应该是魅族迄今为止发售机型中最贵的一款,再加上未标配充电适配器、三零(零预装、无广告、零运营推送),这款机型在发布之初有许多争论,下面我们不妨来测试一下,看看具……关于ASO优化刷榜冲榜维榜锁榜科普百科关于APP刷榜的一些术语刷榜:指通过技术手段提高APP在各大应用市场排行榜的排名。比较多用的应用市场是苹果appstore的刷榜手机app下载量冲榜:指把某APP排……榜单电动车销量榜,特斯拉小鹏比亚迪蔚来宝马榜上有名电动车的市场占有率在逐步提升,更多的基础设置也在同步上线,那么哪些品牌和型号的电动车销量比较好呢?根据最新的统计数据显示,2021年7月销量最高的纯电动车型号是特斯拉的M……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网