MST

星途 面试题库

面试题:JavaScript中对象字面量与构造函数的区别

请详细阐述JavaScript中对象字面量和构造函数在创建对象方式、内存使用、复用性等方面的主要区别,并各举一个简单示例说明。
30.0万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

创建对象方式

  • 对象字面量:使用花括号 {} 直接定义对象,语法简洁直观。 示例:
const personLiteral = {
    name: 'Alice',
    age: 30
};
  • 构造函数:通过定义一个函数,使用 new 关键字调用该函数来创建对象。构造函数内部的 this 关键字指向新创建的对象。 示例:
function PersonConstructor(name, age) {
    this.name = name;
    this.age = age;
}
const personConstructor = new PersonConstructor('Bob', 25);

内存使用

  • 对象字面量:每次使用对象字面量创建新对象,都会在内存中开辟新的空间存储对象属性,即使属性和其他对象字面量相同。
  • 构造函数:通过构造函数创建的对象,虽然每个实例对象在内存中是独立的,但它们共享构造函数的属性和方法,相对节省内存。例如所有通过 PersonConstructor 创建的对象都共享 PersonConstructor.prototype 上的属性和方法。

复用性

  • 对象字面量:复用性较差,每个对象字面量都是独立的,如需创建多个类似对象,需重复编写属性和方法。
  • 构造函数:复用性强,只需定义一次构造函数,就可通过 new 关键字创建多个具有相同属性和方法的对象实例。同时,还可通过原型链来扩展对象的属性和方法,所有实例都能共享这些扩展。