工厂函数和类

2023-10-29
2分钟阅读时长

在 JavaScript 中,工厂函数和类都是用于创建对象的模板。

工厂函数

工厂函数是一种简单的函数,其目的是通过创建并返回一个新对象来封装和组织代码。它通常具有以下特点:

  • 使用函数表达式或函数声明语句定义。
  • 函数内部使用对象字面量或 new 关键字创建一个新对象。
  • 在函数内部对新对象进行处理并赋值属性、方法等。
  • 最后将新对象作为函数的返回值。

示例代码:

function createPerson(name, age) {
  var person = {};
  person.name = name;
  person.age = age;
  person.sayHello = function () {
    console.log("Hello, my name is " + this.name);
  };
  return person;
}

var john = createPerson("John", 30);
john.sayHello(); // Hello, my name is John

类是一种更复杂的对象创建方式,它基于面向对象编程的概念。在 ES6 之前,JavaScript 并没有真正意义上的类,而是通过构造函数来模拟类的行为。在 ES6 中,引入了 class 关键字,使得 JavaScript 具备了真正的类的特性。

类通常具有以下特点:

  • 使用 class 关键字定义,可以包含属性、方法、静态方法等。
  • 使用 constructor 方法初始化对象的属性。
  • 使用 extends 关键字实现继承。
  • 可以使用 super 关键字调用父类的构造函数,从而继承父类的属性和方法。

示例代码:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  sayHello() {
    console.log("Hello, my name is " + this.name);
  }
}

class Student extends Person {
  constructor(name, age, grade) {
    super(name, age);
    this.grade = grade;
  }
  study() {
    console.log(this.name + " is studying in grade " + this.grade);
  }
}

var john = new Student("John", 15, 9);
john.sayHello(); // Hello, my name is John
john.study(); // John is studying in grade 9

总之,工厂函数是一种简单的对象创建方式,适用于创建单一对象或一组相似对象。而类是一种更复杂的对象创建方式,适用于需要定义多种类型的对象、进行继承和多态等面向对象编程的场景。