一、不会的****问题****如何回答
1.找同类 例如:ajax 2.确认是否听清,你可以让对方再说一下没准面试官说的术语不是你平时说的那个 3.如果真的不会,应该反问一下(注意:反问技巧)
二、会的****问题****如何回答
要点:
1.是什么?
2.适用场景
3.优缺点
4.代码如何实现
5.还有没有更好的解决方案来取代? let
三、原型****链
实例,构造函数(controcutor) 原型(prototype) proto[图片上传失败...(image-aaafc6-1555557227546)]
[图片上传失败...(image-fc9ac9-1555557227549)]
四、****JS****继****承
面向对象是什么:万物皆对象
对象包括:属性和方法
创建对象的方式:对象字面量和构造函数方式
面向对象的三大特性:封装,继承,多态
继承才开始登场:???
1.ES5继承: prototype
继承方式:
(1)原型链继承:继承父类原型的方法
(2)借用构造函数继承:在子类中用call或apply继承父类实例属性
(3)组合继承
代码实现:
//创建两个类A和B,B如何继承A
function A(name,age) {
this.name=name ||'无名';
this.age=age || 0
}
A.prototype.getName=function() {
console.log(`获取的姓名为:${this.name}`)
}
var a1=new A('王崇吉');
a1.getName()
function B(name,age) {
//this.name=name ||'ming'
//借用构造函数继承
A.call(this,name,age)
this.address="北京"
}
//原型链继承
B.prototype=new A()
var b1=new B('张思睿');
b1.getName();
ES6继承: extends
代码实现:
//创建两个类A和B,B如何继承A
class A {
constructor(name,age) {
this.name=name ||'无名';
this.age=age || 0
}
getName() {
console.log(`获取的姓名为:${this.name}`)
}
}
var a1=new A('王崇吉');
a1.getName()
class B extends A {
constructor(name,age) {
super(name,age) //指父类
}
}
var b1=new B('张思睿222');
b1.getName();
��