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
,您不能重新分配对象,但仍然可以更改属性的值、删除属性或创建新属性。