Class

错误之处,欢迎指正。


1. 面向对象和面向过程

以将大象放进冰箱举例:

  1. 面向过程:思考的切入点是功能的步骤。
function openDoor() {}   //开门
function elephantIn() {} //放进冰箱
function closeDoor() {}  //关门
  1. 面向对象:思考的切入点是对象的划分。
function Elephant() {}  //构造函数大象
function Fridge() {}    //构造函数冰箱
Fridge.prototype.openDoor = function () {}  //开冰箱门方法
Fridge.prototype.closeDoor = function () {} //关冰箱门方法
Fridge.prototype.in = function () {}        //放入冰箱方法
const f = new Fridge();  //创建一个冰箱
f.openDoor();  //打开该冰箱的门
const e = new Elephant();  //创建一个大象
f.in(e);  //将大象放入冰箱
f.closeDoor();  //关闭冰箱门

从上面代码可以看出,面向过程的写法更为简洁,但是不利于后期的维护修改;相反,使用面向对象的方法,只需要去关注该对象上的方法,对于后期维护,只需要在方法上做手脚。没有绝对的好与坏,需要依照需求来决定选取哪种方法。

2. 构造函数

  1. 传统的构造函数属性和方法定义分离。
  2. 原型上的属性会被枚举。
  3. 构造函数依然可以当作普通函数使用。

3. 类

在面向对象式编程中,把对象的所有成员定义称之为一个类。

class Animal {
    constructor(name, age){
        this.name = name;
        this.age = age;
    }
    print() {
        console.log(this.name);
        console.log(this.age);
    }
} 
  1. class不存在变量提升,存放于暂时性死区。
  2. class里的方法都不可枚举。
  3. class必须使用new调用。
  4. static关键字;静态成员,函数的本身是对象,函数上面本身的成员就是静态成员,不能被实例访问到,只能通过构造函数本身使用。

你可能感兴趣的:(Class)