类与实例
1:类的声明
1:第一种方式 用构造函数模拟类的方式
function Animal() { this.name = 'name'}
2: 第二种方式 ES6 class
class Animal2 { constructor(name) { this.name = 'name'; } }
2:生成实例
new Animal(), new Animal2()
类与继承
如何实现继承
1: 借助构造函数实现继承
function Parent1() {
this.name = 'parent1';
}
function Child1() {
Parent1.call(this); //apply
this.type = 'child1';
}
console.log(new Child1())
改变Parent1运行时刻this指向 Parent1 原型链上的东西并没有被Child1 继承
2: 借助原型链实现继承
function Parent2(){
this.name = 'parent2';
}
function Child2() {
this.type = 'child2';
}
Child2.prototype = new Parent2();
var child2 = new Child2()
console.log(child2);
3: 组合继承方式一
function Parent4() {
this.name = 'parent4';
this.play = [1,2,4];
}
function Child4() {
Parent4.call(this);
this.type = 'child4'
}
// Child4.prototype = new Parent4()
Child4.prototype = Parent4.prototype;
var child41 = new Child4();
var child42 = new Child4();
child41.play.push(5)
console.log(child41,child42)
4: 组合继承方式二
function Parent5() {
this.name = 'parent5';
this.play = [1,2,5];
}
function Child5() {
Parent5.call(this);
this.type = 'child5'
}
// Child5.prototype = Parent5.prototype;
Child5.prototype =Object.create(Parent5.prototype);
Child5.prototype.constructor = Child5;
var child51 = new Child5();
var child52 = new Child5();
child51.play.push(5)
console.log(child51,child52)
//备注 Child5.prototype.constructor = Child5;Child5.prototype =Object.create(Parent5.prototype);
继承的几种方式