转眼间已经在千锋web前端培训学习了三个月,经过第二阶段js的学习对前端的基础知识也有了一个基本的认识。在第二阶段项目中,对前端的一些业务逻辑也有了一个基础的了解。总的来说,学习还是比较顺利的。继承在js里面算是一个比较重要的点,同时也是面试中经常问到的一个问题。js继承方式有六种,它的实现方式和优缺点是什么呢?
1. 构造继承
实现方法: 将构造函数的原型设置成另一个构造函数的对象,这样就可以继承另一个原型对象上的所有属性和方法,可以继续往上,终形成原型链。
缺点:(1)当实现继承后,另一个原型的实例属性,变成了现在这个原型的原型属性,然后该原型的引用类型属性会被所有的实例共享,这样继承原型引用类型属性的实例之间不再具有自己的独特性了。
(2)在创建子类型的实例时,没有办法在不影响所有对象实例的情况下给超类型的构造函数中传递参数。
2. 借用构造函数继承
为了解决原型中包含引用类型值的问题,开始借用构造函数来进行继承。
优点:(1)创建子类实例时,可以向父类传递参数
(2)可以实现多继承(call多个父类对象)
缺点:(1)实例并不是父类的实例,只是子类的实例
(2)只能继承父类的实例属性和方法,不能继承原型属性/方法
(3)无法实现函数复用,每个子类都有父类实例函数的副本,影响性能
3. 拷贝继承
优点:支持多继承
缺点:(1)效率较低,内存占用高(因为要拷贝父类的属性)。
(2)无法获取父类不可枚举的方法(不可枚举方法,不能使用for in 访问到)。
4.组合继承
优点:(1)弥补了方式2的缺陷,可以继承实例属性/方法,也可以继承原型属性/方法。
(2)既是子类的实例,也是父类的实例。
(3)不存在引用属性共享问题。
(4)可传参。
(5)函数可复用。
缺点:调用了两次父类构造函数,生成了两份实例(子类实例将子类原型上的那份屏蔽了)。
4. 寄生组合继承
堪称,但实现复杂
5.语法糖继承(extends)
以上就是对继承的部分总结,现在已经进入第三阶段,开始学习NodeJs了。刚开始学习NodeJs可能还有点迷,但是自己下去理解和敲时基本能跟得上还算是一个好的开端。希望自己接下来依然充满学习热情,加油!
相关文章
关注千锋学习站小程序
随时随地免费学习课程
扫一扫快速进入
千锋移动端页面
扫码匿名提建议
直达CEO信箱