JavaScript – 继承 2024-07-29 21:54:40 课程大纲一、继承1.继承和UML图2.构造函数继承3.原型链继承4.混合继承二、闭包1.什么是闭包2.闭包的原理3.闭包的应用继承和UML图首先来看类的继承1.父类和子类2.方法重写继承和UML我们简单来说一下:例如类名叫动物;动物这个类又分为猫类、狗类等;猫类、狗类等动物都有眼睛、鼻子、耳朵、嘴等这些属性。构造函数和继承我们回顾一下想要创建一个类Person,应该怎么创建:在new Person过程中,我们回顾一下发生了哪些事情:1.js解析器为我们创建了一个对象2.将构造函数中的this指针指向了这个对象3.执行构造函数内的代码4.将构造函数返回以上是我们的Person类那现在我们创建一个student类它比Person类要额外多一个id属性,也就是类似于学号接着我们来创建一下:但是现在的Person和Studen没有关系,我们没有将person代码重用,而是复制了一份下来,现在并不是继承,那我们怎么样能让student继承person的类呢?想要继承person类,就要执行person构造函数,这样才能将name和age挂到对象上但是,有一点需要注意,如果直接将相同部分删除,调用Person类,这时的this指针默认是指向window的此时并不是我们想要的,name和age只是挂在了window上我们想要的是name,age,sayHello挂在student对象上,在这里我们就要使用函数的两个方法:apply 和 call 二者任选其一即可我们如果通过某个方法调用Person,那么this就是指向这个方法前面的对象两种方法的写法如下:这样就实现了构造函数的继承但是实际上这种构造函数的继承是有问题的因为通常情况下,我们在创建对象时,不会把方法放到对象上;而是将方法放到原型上我们将sayHello改为原型上,通过组合模式创建:这时原型是用组合模式进行创建,但是继承仅仅继承了构造函数的内容,原型内的内容是完全没有涉及到的,这时我们就要想到如何去继承原型?原型链的继承在定义Person()函数之前,先要在它的原型上创建类,Person.prototype然后添加一些属性,接着用new来创建这个类的对象在new中,还是做了之前说过的那几件事:1.创建了一个对象2.将this指向了这个对象3.执行构造函数4.返回这个对象此时运行结果为:可以正常运行首先说明你的p对象里面是有sayHello这个方法的,另外在sayHello中我们也成功的访问了它的name属性xiaoR,也就是说实际上在p上能访问到sayHello和name的,同理age也是存在的为什么会这样呢?我们看构造函数中完全是空的什么也没有,那为什么这个对象上会有name和sayHello呢?这里来解释一下:1.首先我们创建了一个function Person,在Person中有一个属性叫prototype,这个属性是我们每创建一个函数都会给我们分配的,这个prototype指向一个对象,这个对象实际上就是Person.prototype对象2.接着我们在Person.prototype上添加了name,age,sayHello三个属性,实际上相当于在这个对象上添加了这3个属性,这就是我们创建Person构造函数所发生的事情3.接着我们再回头来看一下,在new p时还发生了什么?还创建了一个_proto_属性,它指向了原型Person.prototype4.我们在访问p的sayHello的时候实际上是访问p的某个属性,那么我们在访问p一个对象的属性时,它到底是怎么去找到它的值的呢?这就涉及到我们在访问属性的时候的一个规则:当访问一个对象属性的时候,首先在这个对象本身上进行查找,如果说能够在本身找到,就直接返回这个属性且停止查找;如果没找到,它会继续在原型上找,这个原型也就是_poto_指向的那个对象5.我们通过这个解释再来看,现在我们在找P的sayHello时,在p对象本身是是没有的,既然p对象没有,那么就去_poto_指向的这个对象去找,即可找到p的name即:返回的就是Person.prototype的属性接着我们来创建一个Student函数,现在student.prototype是没有东西的我们要通过Student借助于一个临时变量,来找到Person.prototype原型:我们来看怎么去实现它:我们新建一个s = new Student对象调用sayHello试试:运行结果如下:这里来分析一下新建的s对象这个原型链的具体步骤,就是一直找,直到找到空为止:以上就是原型继承和原型链混合继承既保证属性不会被子类或者某个对象改变,也保证了函数能够被所有对象所共享,这就是混合继承。- 写作不易,大家多多关注,谢谢啦----web分享,分享的不只是web 赞 (0) 相关推荐 深入理解new运算符 在 JavaScript 中,new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例.创建一个对象很简单,为什么我们还要多此一举使用 new 运算符呢?它到底有什么样的魔力? 认 ... 郭继承丨我们为什么要感父母的恩? 郭继承丨我们为什么要感父母的恩? 《民法典》:4种财产不能继承(详解 法条) 来源:法务之家 转自:法眼观察 特别提示:凡本号注明"来源"或"转自"的作品均转载自媒体,版权归原作者及原出处所有.所分享内容为作者个人观点,仅供读者学习参考, ... “天地玄黄混沌未开”时期,女娲兄妹“亚当”“夏娃”古猿、鱼石螈、直立人、智人……现代人继承了尼安德特人的抗冻基因, 昔宇宙初开之时,只有女娲兄妹二人,在昆仑山,而天下未有人民--<独异志>. 在生物学未发展之前,人类的起源都跟神话有关,中国传说中最为典型的就是"女娲造人",西方也有上 ... 李翰卿老中医运用附子的经验[名老中医学术经验整理与继承]【转载】 李翰卿老中医运用附子的经验[名老中医学术经验整理与继承] 发表者:赵东奇 208人已读 1.回阳救逆 附子对脾肾阳衰欲亡的有很好效果,是中药回阳救逆中最为优秀的药物.常与干姜.甘草配合,治疗脾肾阳衰四 ... 岳美中经方治肾脏疾病——[名老中医学术经验整理与继承]【转载】 岳美中经方治肾脏疾病——[名老中医学术经验整理与继承]【转载】 21岁出道,31岁嫁豪门,39岁继承百亿遗产,44岁美若少女 娱乐圈一直以来都是一个谜一样的地方,有很多人,是来到这一个圈子当中,为了捞取更多的金钱,实现自己更加良好的物质生活.但是,也有一些娱乐明星之所以选择演戏,都是因为个人的兴趣爱好,觉得演戏,就是自己这一 ... 退休人重要提醒!这5种财产,不能继承了!亲生子女也不行! 最近,网上流传这样一篇文章,"独生子女无法继承父母的房产了!"这种文章看上去就像耸人听闻的谣言,实际上还真不一定,今天夕阳好的编辑们就跟您聊聊五种子女不能继承的财产. 1 第一种情 ... 激荡四百年:萧道成去世萧赜继位,继承父志南齐迎来小中兴 本文是长篇系列文章<激荡四百年>的第421篇 萧道成为人深谋远虑,宽宏大量,学识广博,还能写文章.即位后,生活依然朴素节俭. 有一次,萧道成在主衣库中看见一个玉导,便敕令中书道:" ... #看导图学法律# No.3 遗产继承中的... #看导图学法律# No.3 遗产继承中的遗嘱执行人与遗产管理人 关键词:民法典 遗产 继承 遗嘱执行人 遗产管理人#无讼学院# 想要高清导图朋友们,可私信小编"领取导图"