JavaScript面向对象 继承的几种写法以及优缺点
程序员文章站
2022-06-19 12:47:33
继承的几种写法以及优缺点继承是指子类继承父类的特征和行为,使得子类具有父类的实力域和方法继承的好处:提高代码的复用提高代码的维护性使得类与类产生了联系有三种方法:一. 原型链继承创建父类创建子类子类.prototype = new 父类函数名( )实例化 子类 得到对象优点:继承所有缺点:不能给父类 构造函数传参function Fu(name,age){ this.name=name; this.age=age;}Fu.pro...
继承的几种写法以及优缺点
继承是指子类继承父类的特征和行为,使得子类具有父类的实力域和方法
继承的好处:
- 提高代码的复用
- 提高代码的维护性
- 使得类与类产生了联系
有三种方法:
一. 原型链继承
- 创建父类
- 创建子类
- 子类.prototype = new 父类函数名( )
- 实例化 子类 得到对象
优点:继承所有
缺点:不能给父类 构造函数传参
function Fu(name,age){
this.name=name;
this.age=age;
}
Fu.prototype.say=function(){
}
function Zi(){
}
var obj=new Zi();
console.log(obj);
二. 类式继承( 借用构造函数继承 / 改变this指向 实现继承)
- 创建父类
- 创建子类
- 子类内部调用父类,改变父类this 指向 (this,参数,参数…)
- 实例化 子类 得到对象
优点:可以给父类传参
缺点:不能继承父类的原型对象
function Fu(name,age){
this.name=name;
this.age=age;
}
Fu.prototype.say=function(){
}
function Zi(name,age){
Fu.call(this,name,age);
// Fu.apply(this,[name,age]);
// Fu.bind(this)(name,age);
// Fu.bind(this,name,age)();
}
Zi.prototype=new Fu();
var obj=new Zi("张",20);
console.log(obj);
三. 组合继承 ( 原型继承+类式继承 )
function Fu(name,age){
this.name=name;
this.age=age;
}
Fu.prototype.say=function(){
}
function Zi(name,age){
Fu.call(this,name,age);
}
Zi.prototype=new Fu();
var obj2=new Zi("张",20);
console.log(obj2);
本文地址:https://blog.csdn.net/zhangxueti/article/details/112548440