前端开发必知必会:创建对象的多种方式及区别

5 min read

常见的创建对象的方式包括:

  1. 构造函数:使用函数扮演类的角色来创建对象。通过 new 关键字调用构造函数来创建对象。
function Person(name, age) {
  this.name = name;
  this.age = age;
}

let person1 = new Person('Tom', 20);
  1. 对象字面量:直接使用 {} 创建对象
let person1 = {
  name: 'Tom',
  age: 20
};
  1. 工厂模式:使用函数来封装创建对象的过程,函数返回一个新的对象。
function createPerson(name, age) {
  let person = {};
  person.name = name;
  person.age = age;
  return person;
}

let person1 = createPerson('Tom', 20);

这几种方式都可以用来创建对象,但是它们之间有一些区别。

  • 构造函数创建的对象会继承构造函数的原型对象,也就是说,通过构造函数创建的所有对象都可以共享构造函数原型对象上定义的属性和方法。
  • 对象字面量和工厂模式创建的对象每个都是独立的,它们之间没有任何关系,无法实现代码复用。
  • 工厂模式创建对象时,函数中返回的对象会脱离构造函数原型对象,它没有自己的原型,所以使用 instanceof 运算符会返回 false。

在实际项目中,通常使用构造函数的方式来创建对象,可以更好的利用构造函数原型链上的属性和方法,同时也方便代码管理和维护。