类的创建
1.字面量
var obj = {
name: '小明'
}
2.工厂函数
function createObj(){
let obj = {
name: '小明'
}
return obj
}
var obj = createObj()
3.构造函数
function Obj(){
this.name = '小明'
}
var obj = new Obj()
类的继承
1.基于原型链的继承
function Parent(){}
function Son(){}
Son.prototype = new Parent()
缺点:所有的子类对象共享一份父类实例的属性和方法,无法实现多继承,创建子类实例时不能向超类的构造函数中传递参数。
2.基于构造函数的继承
function Parent(){}
function Son(){
Parent.call(this)
}
缺点:无法访问父类原型中的属性和方法
3.组合继承
function Parent(){}
function Son(){
Parent.call(this)
}
Son.prototype = new Parent()
缺点:需要保存两份父类实例对象的属性和方法
4.寄生的组合继承方式
function Parent(){}
function Son(){
Parent.call(this)
}
Son.prototype = Object.create(Parent.prototype)