js基础面对对象

37 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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;
  }
  方法(){}  
}