JavaScript里面的子类和父类是什么意思?

JavaScript022

JavaScript里面的子类和父类是什么意思?,第1张

js是通过prototype实现的继承,

如ClassA.prototype = new ClassB().

就可以说ClassA是ClassB的子类,同时ClassB是ClassA的父类

js中定义一个class其实就是一个function,如

var ClassA = function() {

}

====怎么最近好像老有人问这个?

//子类Student

function Student(name,age,sex,phone){

//继承方法

Person.call(this,name,age)

//添加自己的属性

this.sex=sex

this.phone=phone

//添加自己的方法

this.say()

}

//继承父类的属性

for(var i in Person.prototype){

Student.prototype[i]=Person.prototype[i]

}

//重写父类方法

Student.prototype.say()

{

alert(this.phone+' 'this.sex)

}

利用原型链来实现继承,父类的一个实例作为子类的原型

原理: 子类的原型对象 指向 父类的实例 , 当 子类实例 找不到属性和方法时,会沿着原型链往上找。

优点:简单,既是子类实例也是父类实例,父类新加原型方法或者属性,子类都能访问到

缺点:

通过使用call、apply方法可以在新创建的对象上执行构造函数,用父类的构造函数来增加子类的实例

原理: 子类的构造函数中执行父类的构造函数,并且改变子类的this绑定

优点:简单,直接父类的属性和方法

缺点:无法继承原型链上的属性方法

将父类原型对象直接赋值给子类的构造函数,再将空属性的构造函数实例赋值给子类原型对象

优点:完美实现继承,解决了组合式继承带两份属性的问题; new Child的时候不用 每次都 new Parent

缺点: 子类的prototype添加方法会影响 父类的prototype

将父类原型对象直接赋值给子类的构造函数,再将空属性的构造函数实例赋值给子类原型对象

优点:完美实现继承,解决了组合式继承带两份属性的问题; new Child的时候不用 每次都 new Parent

将等待继承的原型对象克隆,再赋值给继承的原型对象

优点:直接通过对象生成一个继承该对象的对象

缺点:不是类式继承,而是原型式基础,缺少了类的概念

参考: https://www.jb51.cc/note/413574.html

https://blog.csdn.net/qq_42926373/article/details/83149347