JavaScript 对象操作方法详解

在 JavaScript 中,对象是一种非常重要的数据结构,用于存储各种类型的数据。对象由一组键值对组成,每个键对应一个值。对象的操作是 JavaScript 编程中最常见的任务之一,掌握各种对象操作方法能让你更高效地处理数据。

以下是 JavaScript 中常见的对象操作方法及其用法示例:


1、创建对象

字面量创建对象

js 复制代码
let obj = {};  // 创建空对象
let objWithProps = { name: 'John', age: 30 };  // 创建带有属性的对象

使用构造函数创建对象

js 复制代码
let obj = new Object();  // 创建空对象
  • 字面量创建对象 更简洁且更常用,尤其是带属性的对象。
  • 构造函数创建对象 适用于需要动态创建对象的场景,但一般不常见。

2、添加属性

直接添加属性

js 复制代码
obj.property = 'value';  // 直接通过点操作符添加属性

使用字符串形式添加属性

js 复制代码
obj['property'] = 'value';  // 使用字符串形式添加属性

使用变量作为属性名

js 复制代码
let propName = 'dynamicProperty';
obj[propName] = 'value';  // 使用变量作为属性名添加属性
  • 点操作符 是最常见的方式,简洁明了。
  • 方括号操作符 适用于动态属性名,或者属性名是保留字时(如 classfunction)。
  • 使用变量作为属性名 允许你通过动态的变量值来设置属性。

3、 删除属性

删除属性

js 复制代码
delete obj.property;  // 删除对象的指定属性
  • delete 操作符可以删除对象的属性,但不能删除对象本身。
  • 如果删除的是原型链上的属性,则不会影响对象实例本身。

4、检查属性

检查对象是否有该属性(不检查原型链)

js 复制代码
obj.hasOwnProperty('property');  // 返回 true 或 false

检查对象是否有该属性(包括原型链上的属性)

js 复制代码
'property' in obj;  // 返回 true 或 false
  • hasOwnProperty() 只检查对象本身是否拥有该属性,不检查原型链。
  • in 运算符 会检查对象及其原型链是否有该属性。

5. 访问属性值

直接访问属性值

js 复制代码
console.log(obj.property);  // 通过点操作符获取属性值

使用字符串形式访问属性值

js 复制代码
console.log(obj['property']);  // 使用方括号访问属性值

使用变量作为属性名访问

js 复制代码
let propName = 'dynamicProperty';
console.log(obj[propName]);  // 使用变量获取属性值
  • 点操作符 是最常见且最直观的访问方式。
  • 方括号操作符 可用于动态访问或访问非法变量名(如带空格、保留字等)。

6. 修改属性值

直接修改属性值

js 复制代码
obj.property = 'newValue';  // 修改已有属性的值

使用字符串形式修改属性值

js 复制代码
obj['property'] = 'newValue';  // 修改已有属性的值

使用变量作为属性名修改属性值

js 复制代码
let propName = 'dynamicProperty';
obj[propName] = 'newValue';  // 修改动态属性的值
  • 修改属性值时,使用点操作符或方括号都可以。
  • 如果修改的属性不存在,JavaScript 会自动添加该属性。

7. 遍历对象

使用 for...in 循环遍历对象的所有属性

js 复制代码
for (let key in obj) {
  if (obj.hasOwnProperty(key)) {
    console.log(key, obj[key]);  // 遍历属性名和属性值
  }
}
  • for...in 用于遍历对象的所有可枚举属性(包括原型链上的属性),因此常与 hasOwnProperty() 结合使用,避免遍历到继承的属性。 使用 Object.keys() 获取对象的所有属性名
js 复制代码
Object.keys(obj);  // 返回对象的所有属性名(不包括原型链上的属性)

使用 Object.values() 获取对象的所有属性值

js 复制代码
Object.values(obj);  // 返回对象的所有属性值(不包括原型链上的属性)

使用 Object.entries() 获取对象的所有属性名和属性值的数组

js 复制代码
Object.entries(obj);  // 返回包含键值对的二维数组
  • Object.keys()Object.values()Object.entries() 不会遍历原型链上的属性,只返回对象本身的属性。

8. 对象的拷贝

浅拷贝对象(只拷贝第一层属性):

js 复制代码
let obj2 = Object.assign({}, obj);  // 创建对象的浅拷贝

深拷贝对象(递归拷贝所有层级的属性):

js 复制代码
let obj2 = JSON.parse(JSON.stringify(obj));  // 创建对象的深拷贝
  • 浅拷贝 只复制对象的第一层属性,对嵌套的对象仍然是引用。
  • 深拷贝 会递归复制对象的所有属性,包括嵌套的对象和数组。

9. 类型判断

判断对象类型

js 复制代码
typeof obj;  // 返回 'object',但对于 null 会返回 'object'
  • typeof 运算符会返回 "object",但对于 null 也会返回 "object",因此需要额外检查。 判断是否为数组
js 复制代码
Array.isArray(obj);  // 判断对象是否为数组,返回 true 或 false
  • Array.isArray() 是判断数组类型的标准方法。

总结

JavaScript 提供了多种方法用于操作对象,灵活地处理对象的创建、属性访问、修改、删除、遍历等操作。以下是常见对象操作的总结:

  1. 创建对象:使用字面量或构造函数创建对象。
  2. 操作属性:通过点操作符、方括号操作符、变量等方式添加、修改、删除对象的属性。
  3. 遍历对象 :使用 for...inObject.keys()Object.values()Object.entries() 等方法遍历对象。
  4. 对象拷贝 :使用 Object.assign() 进行浅拷贝,使用 JSON.parse(JSON.stringify()) 进行深拷贝。
  5. 类型判断 :使用 typeof 判断类型,使用 Array.isArray() 判断是否为数组。

掌握这些对象操作方法,能够帮助你更高效地编写 JavaScript 代码,处理日常开发中的对象数据操作。

相关推荐
轻口味1 小时前
Vue.js 使用 `teleport` 实现全局挂载
前端·javascript·vue.js
CodeClimb1 小时前
【华为OD-E卷 - 115 数组组成的最小数字 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
CodeClimb1 小时前
【华为OD-E卷 - 114 找最小数 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
吴小花的博客1 小时前
日期选择控件,时间跨度最大一年。
前端·vue.js·elementui
m0_748248231 小时前
Go-Gin Web 框架完整教程
前端·golang·gin
苏-言2 小时前
深入核心:一步步手撕Tomcat搭建自己的Web服务器
服务器·前端·tomcat
16年上任的CTO2 小时前
vue2-给data动态添加属性
前端·javascript·vue.js·动态添加属性
彭友圈1012 小时前
利用HTML和css技术编写学校官网页面
前端·css·html
低代码布道师3 小时前
家政预约小程序12服务详情
开发语言·javascript·低代码·小程序
飞舞花下3 小时前
一、0-1搭建springboot+vue3前后端分离-前端项目创建
前端