JavaScript 对象定义
定义 JavaScript 对象的几种方法
- 使用对象字面量
- 使用
new
关键字 - 使用对象构造函数
- 使用
Object.assign()
- 使用
Object.create()
- 使用
Object.fromEntries()
JavaScript 对象字面量
对象字面量是花括号 {} 中包含的 属性名:值 列表。
{firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
注意
对象字面量 也称为 对象初始化器。
创建 JavaScript 对象
示例
使用 {}
创建一个空的 JavaScript 对象,并添加 4 个属性
// 创建一个对象
const person = {};
// 添加属性
person.firstName = "John";
person.lastName = "Doe";
person.age = 50;
person.eyeColor = "blue";
自己动手试一试 »
使用 new Object()
创建一个空的 JavaScript 对象,并添加 4 个属性
// 创建一个对象
const person = new Object();
// 添加属性
person.firstName = "John";
person.lastName = "Doe";
person.age = 50;
person.eyeColor = "blue";
自己动手试一试 »
注意
上面的示例执行的操作完全相同。
但是,没有必要使用 new Object()
。
为了可读性、简洁性和执行速度,请使用 对象字面量 方法。
对象构造函数
有时我们需要创建许多相同类型的对象。
要创建对象类型,我们使用 对象构造函数。
通常建议构造函数名以大写字母开头。
对象类型 Person
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
自己动手 »现在我们可以使用 new Person()
来创建许多新的 Person 对象
示例
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
const mySister = new Person("Anna", "Rally", 18, "green");
const mySelf = new Person("Johnny", "Rally", 22, "green");
自己动手 »
属性默认值
赋给属性的值将成为构造函数创建的所有对象的默认值
示例
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
自己动手试一试 »
JavaScript 对象方法
JavaScript 对象方法可分为
- 通用方法
- 属性管理方法
- 对象保护方法
通用方法
// 从源对象复制属性到目标对象
Object.assign(target, source)
// 从现有对象创建对象
Object.create(object)
// 返回对象的键/值对数组
Object.entries(object)
// 从键/值列表中创建对象
Object.fromEntries()
// 返回对象键的数组
Object.keys(object)
// 返回对象属性值的数组
Object.values(object)
// 根据函数对对象元素进行分组
Object.groupBy(object, callback)
属性管理方法
// 添加或更改对象属性
Object.defineProperty(object, property, descriptor)
// 添加或更改对象属性
Object.defineProperties(object, descriptors)
// 访问属性
Object.getOwnPropertyDescriptor(object, property)
// 访问属性
Object.getOwnPropertyDescriptors(object)
// 将所有属性作为数组返回
Object.getOwnPropertyNames(object)
// 访问原型
Object.getPrototypeOf(object)
对象保护方法
// 防止重新赋值
const car = {type:"Fiat", model:"500", color:"white"};
// 防止添加对象属性
Object.preventExtensions(object)
// 如果可以向对象添加属性,则返回 true
Object.isExtensible(object)
// 防止添加和删除对象属性
Object.seal(object)
// 如果对象已密封,则返回 true
Object.isSealed(object)
// 阻止对对象进行任何更改
Object.freeze(object)
// 如果对象已冻结,则返回 true
Object.isFrozen(object)
使用 const
保护对象不被更改的最常用方法是使用 const
关键字。
使用 const
你不能重新分配对象,但你仍然可以更改属性的值、删除属性或创建新属性。