type
status
date
slug
summary
tags
category
icon
password
URL
Sep 1, 2022 09:23 AM
继承让子类可以直接使用父类的方法和属性,同时子类也可以添加自己的方法
子类使用方法或属性时,会先在自己里面找,如果找不到则一层一层向上找,如果到达最上层时还没找到,则会报错
原型继承
为子类对象添加原型方法时,必须先实现继承关系,父类派生给子类的属性是无法在子类对象构造时初始化的,一旦实现了继承关系,则子类原型对象的值就不能再修改了
call&apply继承
可以初始化父类派生给子类的属性,但不能继承父类原型对象的属性和方法
混合继承
可以通过call & apply继承父类派生的属性和方法,再通过原型继承来继承父类的原型属性和方法
实例化对象
实例化对象如何访问所有属性(自身的属性和原型上的方法或者属性)
每个实例化对象都可以直接访问自己添加的自定义属性
每个实例化对象还有一个
_proto_
_proto_
指向该类的原型对象prototype
实例对象通过
prototype
去访问原型对象上的属性或者方法
深拷贝和浅拷贝
深拷贝为变量开辟堆内存空间,一般为先创建构造函数,然后使用for循环或slice等将原数据插入进去
浅拷贝为只给新变量在栈空间添加一个原数据的引用地址,使用时新老变量同时使用一个数据,某一个更改数据后,另一个的数据也会改变
ES6继承
类似于java使用
extends
和super
来继承父类普通方法和构造方法的区别
- 构造方法必须通过new来调用
- 构造方法名子习惯首字母大写
- 构造方法没有返回值