开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第25天,点击查看活动详情
继续上文js基础面对对象https,本文继续深入讲解js里面是如何实现面向对象的
我们以前说,描述一个对象,就是把键值对写到一对大括号里面
var student = {
name : 'vivi'
}
这种方式不好,因为它本质是这样的
var student = new Object();
student.name = 'vivi';
而我们想要描述的是一个学生,这样根本不能明确的描述这是一个学生。而我们以前,描述别的对象,比如日期对象:
var date = new Date();
可以明确的得知,我们新建的就是一个日期对象。
现在如果想要像日期一样,明确描述一种对象,应该如何实现?
由此就引出类的概念。
类
什么是类?
分类——把一些对象分成一些分类,比如有:人类,动物类,植物类...
在语法中描述类
关键字:
class 类名{
}
如果要给类所描述的对象添加属性和方法
需要给一个构造函数在new的时候调用
class 类名{
constructor(){
描述属性
}
}
例如
class Student{
constructor(name,age,height){
this.name = name;
this.age = age;
this.height = height;
}
}
如果要继续描述行为
语法
class 类名{
行为名称(参数){
函数体
}
}
完整的语法:
class 类名{
// 描述属性
construcotr(属性1,属性2...){
this.属性1 = 形参属性1;
this.属性2 = 形参属性2;
...
}
// 描述方法
方法名(参数){
函数体
}
}
总结一下面向对象的套路
1.把类抽象出来
2.new 类名(参数) - 创建对象
3.指挥对象做事情
最后讲讲关于继承。
继承
从父类把父类的属性和方法直接获取过来重复利用——继承
继承的目的:代码的重复使用
es6里面实现继承
class 父类{
consctructor(name){
this.name = name;
}
}
class 子类 extends 父类{
constructor(name,ag){
// 在子类的构造函数里面,一定要调用父元素的构造函数super()
super(name);
// 继续写自己的新增的书写
this.age = age;
}
方法(){}
}