面试视频知识点整理1-9(面向对象)
类与实例
定义类的方式大概有两种:
1)使用构造函数
2)使用es6的class声明
类与继承
继承方式有几种?
1)使用构造函数 (call,apply) 缺点:没法继承父级的原型
2) 使用原型链 优点:可以继承父级的原型 缺点:原型对象是共用的,它的属性会被修改
3)组合方式(构造函数+原型链) 优点:弥补构造函数及原型链的不足 缺点:父级的函数执行了两次
4)组合方式的优化
function Parent(){ this.name="parent"; this.play=[1,2,3]; } function Child(){ parent.call(this); this.type="child"; } //这里使用Object.create隔离Parent的原型对象,否则改constructor会连Parent的一起改了 Child.prototype=Object.create(Parent.prototype); Child.prototype.constructor=Child;
注意点:面试的时候不要只写最好的那种,把这几种都写上,并且把这几点仔细的给面试官讲解区别