JavaScript 的几种继承方式
- 原型链继承
- 构造函数继承
- 组合继承 (伪经典继承)
- 原型式继承
- 寄生式继承
- 寄生组合式继承
- ES6 extends 继承
1, 原型链继承
原理是将父对象的属性和方法通过prototype进行引用
function people() {
this.flag = true;
this.func = function() {
console.log("this is people func");
}
}
function boy() {
this.sex = "boy";
}
boy.prototype = new people();
var peo1 = new boy();
console.log( peo1.flag ); // true
console.log( peo1.func() ); // this is people func
console.log( peo1.sex ); // boy
缺点:
- 实例对象的属性被共享
- 无法向父类的方法传递参数
2, 构造函数继承
构造函数继承主要在继承对象中使用 call()、apply() 完成。
function people(name) {
this.name = name || "xiaoming";
}
// 对people进行继承
function boy() {
people.call(this, "wangming");
this.age = 18;
}
var peo1 = new boy();
console.log( peo1.name ); //wangming
console.log( peo1.age ); //18
缺点:
- 函数无法复用
- 父类的方法对子类不可见
3, 组合继承 (伪经典继承)
夜已深,明日待续...
原文地址:https://www.cnblogs.com/miku561/p/10487017.html
时间: 2024-10-19 18:57:02