在讲解继承之前 我们先来谈谈js中面向对象的概念
在面试的时候也经常会碰见这样的问题.
我们先来阐述一下大概概念,
面向对象是对现实世界的一个延伸,将一个功能抽象成一个对象,他的行为和特征即为对象的方法和属性。就像我们常说的 “万物皆对象”;
我们每一个个体就相当于是一个人的对象的实例。
关于封装的概念,将一个对象独有的属性和方法 封装到一个对象了里面 这样做 既是保证了 数据的私密性又保证代码的可重用性,
而继承 则是对代码重用性进一步提高了 ,子类继承了父类的方法和属性 同时又有自己独特的属性 。
在js中并没有 多态的这个概念,而仅仅的多态也只是用通过函数传入参数的多少 而模拟出来的效果。
我们学过其他的面向对象编程语言的童鞋可能知道 ,多态往往是和接口联系在一起的。
对面向对象的理解:
初级程序员:面试说出面向对象的概念,什么是封装继承和多态。
中级程序员:面向对象提高代码的可重用性,高耦合低内聚
高级程序员:直接从项目中说面向对象的优点和缺点
想要在js中尝试接口的感觉 可以尝试去学习下ts语言,毕竟它是js的一个超集,帮我们扩展了 js。
好了废话不多说了,好像有点跑题,我们今天来讲的似乎js中的继承问题.不说es的 class语法糖的继承哦
1.好了步入正题了
我们一步一步敲着代码走起
先说下类式继承
// 类式继承
function SuperClass(){
this.superValue=true;
}
//为父类添加共有的方法
SuperClass.prototype.getSuperValue=function(){
return this.superValue;
}
//声明子类
function SubClass(){
this.subValue=false;
}
//继承父类
SubClass.prototype=new SuperClass();
//为子类添加共有的方法
SubClass.prototype.getSubValue=function(){
return this.subValue;
}
var child=new SubClass();
console.log(child.subValue,child.superValue)
false true // 最后在控制台输出这俩个
可以看到子类的实例确实能调用父类中的属性 当然方法也照样可以的
其实上面的继承还是有点问题,稍后我会指出的。。。。。。。
生活那么苦,那就笑着去面对,记得给自己吃颗糖!!!