🍉JavaScript进阶——继承

简介: 🍉JavaScript进阶——继承

1. 继承


ES6之前并没有给我们提供extends继承,我们可以通过构造函数+原型对象模拟实现继承,被称为组合继承


1.1 call()


调用这个函数,并且修改函数运行时的this指向


fun.call(thisArg,arg1,arg2,...)
复制代码


  • thisArg:当前调用函数this的指向对象
  • arg1,arg2:传递的其他参数


c41a91a9d30940d89b4699a51cb4d6c9_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


1.2 借用构造函数继承父类型属性


核心原理:通过call()把父类型的this指向子类型的this,这样就可以实现子类型继承夫类型的属性。


// 借用父构造函数继承属性
        // 1.父构造函数
        function Father(uname, age) {
            // this 指向父构造函数的对象实例
            this.uname = name;
            this.age = age;
        }
        // 2.子构造函数
        function Son(uname, age) {
            // this 指向子构造函数的对象实例
            Father.call(this, uname, age);
        }
        var son = new Son("刘德华", 18);
        console.log(son);
复制代码


6d6a9dbc95584f028d5203f2e8b6a29b_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


1.3 借用原型对象继承父类型方法

d57c196906024610bb1ea95b1d2f07b6_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


79392801ce0140108fd5399063f7f4c6_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


Son.prototype=Father.prototype; 这样直接赋值会有问题,如果修改了子原型的对象,父原型对象也会跟着一起变化
复制代码


正确做法:


Son.prototype = new Father();
复制代码


2849a0a3c67a4937bf60525a2b91bb1f_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


注意:如果利用对象修改了原型对象,别忘了利用constructor指回原来的构造函数


22e232eec388471ab24d93bbaa3c2d0e_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

相关文章
|
21天前
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
1月前
|
JavaScript 前端开发
Javascript如何实现继承?
【10月更文挑战第24天】JavaScript 中实现继承的方式有很多种,每种方式都有其优缺点和适用场景。在实际开发中,我们需要根据具体的需求和情况选择合适的继承方式,以实现代码的复用和扩展。
|
24天前
|
JavaScript 前端开发
如何使用原型链继承实现 JavaScript 继承?
【10月更文挑战第22天】使用原型链继承可以实现JavaScript中的继承关系,但需要注意其共享性、查找效率以及参数传递等问题,根据具体的应用场景合理地选择和使用继承方式,以满足代码的复用性和可维护性要求。
|
24天前
|
JavaScript 前端开发 开发者
js实现继承怎么实现
【10月更文挑战第26天】每种方式都有其优缺点和适用场景,开发者可以根据具体的需求和项目情况选择合适的继承方式来实现代码的复用和扩展。
31 1
|
3月前
|
自然语言处理 JavaScript 前端开发
一文梳理JavaScript中常见的七大继承方案
该文章系统地概述了JavaScript中七种常见的继承模式,包括原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合继承等,并探讨了每种模式的实现方式及其优缺点。
一文梳理JavaScript中常见的七大继承方案
|
3月前
|
JavaScript 前端开发
js之class继承|27
js之class继承|27
|
3月前
|
JSON JavaScript 前端开发
js原型继承|26
js原型继承|26
|
3月前
|
JavaScript 前端开发 开发者
JavaScript 类继承
JavaScript 类继承
22 1
|
3月前
|
JavaScript 前端开发
JS的几种继承方式
JavaScript中的几种继承方式视频。
14 0
|
4月前
|
开发者 图形学 iOS开发
掌握Unity的跨平台部署与发布秘籍,让你的游戏作品在多个平台上大放异彩——从基础设置到高级优化,深入解析一站式游戏开发解决方案的每一个细节,带你领略高效发布流程的魅力所在
【8月更文挑战第31天】跨平台游戏开发是当今游戏产业的热点,尤其在移动设备普及的背景下更为重要。作为领先的游戏开发引擎,Unity以其卓越的跨平台支持能力脱颖而出,能够将游戏轻松部署至iOS、Android、PC、Mac、Web及游戏主机等多个平台。本文通过杂文形式探讨Unity在各平台的部署与发布策略,并提供具体实例,涵盖项目设置、性能优化、打包流程及发布前准备等关键环节,助力开发者充分利用Unity的强大功能,实现多平台游戏开发。
107 0