JavaScript对象是存储键值对的数据结构,在实际开发中几乎无处不在,掌握对象的创建和属性访问方法是JavaScript开发的基础技能。不同的创建方式适用于不同的场景,属性访问也有对应的使用规则,下面逐一展开说明。

JavaScript对象的常见创建方式
1. 对象字面量创建
对象字面量是最常用的对象创建方式,直接通过花括号包裹键值对即可完成创建,语法简洁直观,适合创建单个固定结构的对象。
// 使用对象字面量创建用户对象
const user = {
name: '张三',
age: 25,
// 方法也可以直接定义在对象中
sayHello: function() {
console.log('你好,我是' + this.name);
}
};
console.log(user);
2. 构造函数创建
当需要创建多个结构相同的对象时,使用构造函数可以更高效地复用代码,通过new关键字调用构造函数生成实例对象。
// 定义构造函数
function Person(name, age) {
this.name = name;
this.age = age;
this.sayHello = function() {
console.log('你好,我是' + this.name);
};
}
// 创建两个Person实例
const person1 = new Person('李四', 22);
const person2 = new Person('王五', 28);
console.log(person1.name); // 输出 李四
console.log(person2.age); // 输出 28
3. Object.create方法创建
Object.create方法可以指定对象的原型来创建新对象,适合需要基于已有对象扩展的场景。
// 定义原型对象
const personProto = {
sayHello: function() {
console.log('你好,我是' + this.name);
}
};
// 基于原型创建新对象
const newPerson = Object.create(personProto);
newPerson.name = '赵六';
newPerson.age = 30;
newPerson.sayHello(); // 输出 你好,我是赵六
JavaScript对象属性的访问方式
1. 点表示法
点表示法是访问对象属性最常用的方式,语法为对象.属性名,要求属性名必须是合法的标识符,不能是数字开头或者包含特殊字符。
const student = {
name: '小明',
score: 95,
class: '三年级一班'
};
// 使用点表示法访问属性
console.log(student.name); // 输出 小明
console.log(student.score); // 输出 95
2. 方括号表示法
方括号表示法的语法为对象[属性名],属性名可以是字符串或者变量,适合属性名包含特殊字符、是数字或者动态获取的场景。
const product = {
'product-name': '笔记本电脑',
'1st_price': 4999,
price: 4599
};
// 访问包含特殊字符的属性
console.log(product['product-name']); // 输出 笔记本电脑
// 访问数字开头的属性
console.log(product['1st_price']); // 输出 4999
// 动态属性名访问
const propName = 'price';
console.log(product[propName]); // 输出 4599
两种属性访问方式的注意事项
点表示法简洁易读,但只能访问符合标识符规则的属性名;方括号表示法更灵活,支持动态属性名和特殊属性名,但语法相对繁琐。访问不存在的属性时,两种方式都会返回undefined,不会直接报错。
const obj = {
a: 1
};
console.log(obj.b); // 输出 undefined
console.log(obj['b']); // 输出 undefined
// 给不存在的属性赋值会自动新增该属性
obj.b = 2;
console.log(obj.b); // 输出 2
实际开发中的选择建议
如果是固定属性名且符合标识符规则,优先使用点表示法,代码可读性更高;如果属性名是动态的、包含特殊字符或者是数字,就使用方括号表示法。创建对象时,单个对象优先用对象字面量,多个同结构对象用构造函数,需要指定原型的场景用Object.create方法。
JavaScript对象创建属性访问对象字面量构造函数修改时间:2026-07-24 10:27:20