| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 谈谈对于继承的理解 -> 正文阅读 |
|
[JavaScript知识库]谈谈对于继承的理解 |
为什么需要继承?主要是因为需要方便管理与复用,将多个构造函数,建立关联,实现复用 基础知识:JavaScript 规定,每一个构造函数都有一个prototype 属性,指向另一个对象。注意这个prototype就是一个对象,这个对象的所有属性和方法,都会被构造函数所拥有。 大体关系如下 1.构造函数的prototype属性指向了构造函数原型对象 了解以上知识点后我们谈一下继承 ?1?借用构造函数继承在子构造函数内 调用父构造函数并且改变父构造函数this指向
优点
缺点? 只能继承父类实例的属性和方法,不能继承其原型上的属性和方法 2 原型继承通过改造原型链,利用原型链的特征实现继承 让子构造函数的原型指向父构造函数的实例达到继承? 主要实现 继承方法 ?关键代码 Student.prototype=new Person() 优点?
缺点
3?组合继承是构造函数继承与原型继承的组合版本
优点:解决了构造函数继承与原型继承的缺点 缺点: 1 调用了两次父类构造函数,生成了两份实例 2 原型上会有多余不必要的属性 ?4?寄生组合式继承主要借用了 Object.create(参数对象) Object.create 1?会创建一个新对象, 2 并且将新对象的__proto__指向传入的参数 对象与组合继承区别不大只是将Student.prototype=new Person() 改造为Student.prototype=Object.create(Person.prototype)
最完美的哈 就是实现有点复杂? ?5 es6-class实现继承 extends首先了解一下class class就是将原型与方法做了一个整合是一个语法糖
下面的class与上面注释调的函数是相等的 继承的实现如下 extends 会自动帮你完成继承
当没有提供构造时 在继承时会默认自动自动借调父构造函数 ?有构造函数必须有super()?
? ?这个方法相对于寄生式组合更加便 extends会自动帮你完成原型链的改造 也就super()需要自己书写调用父构造函数 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:43:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |