JavaScript中的对象是属性的集合,每个属性由键值对构成,是存储和组织复杂数据的常用结构,不同的创建方式适用于不同的开发场景,开发者可以根据需求灵活选择。

对象字面量创建方式
对象字面量是JS中最常用的对象创建方式,语法简洁直观,适合创建单个独立对象,直接在花括号内定义对象的属性和方法即可。
// 使用对象字面量创建对象
const user = {
name: '张三',
age: 25,
// 对象方法
sayHello: function() {
console.log('你好,我是' + this.name);
}
};
// 访问对象属性
console.log(user.name); // 输出:张三
user.sayHello(); // 输出:你好,我是张三
这种方式创建的对象会直接拥有定义的属性和方法,不需要额外的初始化步骤,但是如果创建多个结构相同的对象,会产生大量重复代码。
构造函数创建方式
当需要创建多个同类型的对象时,可以使用构造函数的方式,先定义构造函数,再通过new关键字实例化对象。
// 定义构造函数
function Person(name, age) {
this.name = name;
this.age = age;
this.sayHello = function() {
console.log('你好,我是' + this.name + ',今年' + this.age + '岁');
};
}
// 实例化对象
const person1 = new Person('李四', 22);
const person2 = new Person('王五', 28);
person1.sayHello(); // 输出:你好,我是李四,今年22岁
person2.sayHello(); // 输出:你好,我是王五,今年28岁
构造函数的函数名通常首字母大写,用来区分普通函数,使用new关键字调用时,会创建一个新的空对象,将this指向这个空对象,执行构造函数内的代码后返回这个对象。
Object.create方法创建
Object.create方法可以基于一个现有对象作为原型来创建新对象,新对象会继承原型对象的属性和方法。
// 定义原型对象
const personPrototype = {
sayHello: function() {
console.log('你好,我是' + this.name);
}
};
// 基于原型创建新对象
const student = Object.create(personPrototype);
student.name = '赵六';
student.grade = 3;
student.sayHello(); // 输出:你好,我是赵六
console.log(student.grade); // 输出:3
这种方式创建的对象,其原型链指向传入的原型对象,适合需要基于现有对象扩展新对象的场景,也可以传入null作为原型,创建没有原型的空对象。
类语法创建方式
ES6引入了class语法,本质是对构造函数创建方式的语法糖,让对象创建的写法更接近传统面向对象语言的写法。
// 定义类
class Animal {
// 构造方法,用于初始化属性
constructor(name, type) {
this.name = name;
this.type = type;
}
// 类方法
introduce() {
console.log('我是' + this.type + ',名字叫' + this.name);
}
}
// 实例化类对象
const cat = new Animal('咪咪', '猫');
cat.introduce(); // 输出:我是猫,名字叫咪咪
类的构造方法constructor会在实例化时自动执行,用于初始化对象的属性,类的方法定义在类的原型上,所有实例共享这些方法。
对象初始化技巧
除了基础的创建方式,JS还提供了一些对象初始化的便捷技巧,可以简化代码编写。
属性简写
当属性名和变量名相同时,可以省略属性值的书写。
const name = '小明';
const age = 30;
// 属性简写,等价于 { name: name, age: age }
const info = { name, age };
console.log(info); // 输出:{ name: '小明', age: 30 }
方法简写
对象中的方法可以省略function关键字。
const tool = {
// 方法简写,等价于 add: function(a, b) {}
add(a, b) {
return a + b;
}
};
console.log(tool.add(1, 2)); // 输出:3
计算属性名
对象的属性名可以通过表达式计算得到,使用方括号包裹表达式即可。
const key = 'score';
const obj = {
[key]: 90,
['user_' + key]: 95
};
console.log(obj.score); // 输出:90
console.log(obj.user_score); // 输出:95
不同创建方式的选择建议
如果是创建单个独立对象,优先选择对象字面量,语法最简单;如果需要创建多个同类型的对象,推荐使用构造函数或者类语法,减少重复代码;如果需要基于现有对象扩展新对象,或者需要自定义对象的原型,选择Object.create方法更合适。开发者可以根据实际场景灵活选择对应的创建方式,提升开发效率。
JavaScriptJS对象创建对象初始化对象字面量构造函数修改时间:2026-07-16 02:09:25