深入学习JavaScript对象

yizhihongxing

深入学习JavaScript对象

介绍

JavaScript 中的对象是一种复杂的数据类型,它可以用来组织和存储数据。本攻略将介绍 JavaScript 对象的基本概念以及如何使用它们。

创建对象

在 JavaScript 中有两种创建对象的方式:利用对象字面量和利用构造函数。

对象字面量

对象字面量是由一对花括号包裹的键值对集合。

// 创建一个对象字面量
const person = {
  firstName: "John",
  lastName: "Doe",
  age: 25,
  hobbies: ["reading", "swimming"],
  address: {
    street: "123 Main Street",
    city: "New York",
    zipCode: "10001"
  }
};

构造函数

构造函数可以用来创建对象模板。通常情况下,构造函数的命名以大写字母开头。

// 构造函数
function Person(firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
  this.greet = function () {
    console.log(`Hello, my name is ${this.firstName} ${this.lastName}.`);
  };
}

// 创建一个 Person 对象
const john = new Person("John", "Doe");
john.greet(); // 输出 "Hello, my name is John Doe."

访问对象属性

访问对象的属性或方法需要使用点(.)操作符来访问。还可以使用中括号([])操作符来访问属性,中括号内部为属性的字符串名。

// 访问对象属性
console.log(person.firstName); // 输出 "John"
console.log(person["lastName"]); // 输出 "Doe"

浅拷贝和深拷贝

在 JavaScript 中,对象通过引用传递。这意味着,如果将一个对象赋值给另一个变量,那么两个变量将会引用同一个对象。浅拷贝是指在只复制对象的引用时,缺少对该对象内部属性的复制,也就是只复制对象的第一层。深拷贝则是完全的复制一个对象。

浅拷贝

// 浅拷贝对象
const personCopy = person;
personCopy.firstName = "Jane";

console.log(person.firstName); // 输出 "Jane"

深拷贝

// 深拷贝对象
function deepCopy(obj) {
  if (typeof obj !== "object") return obj;
  const newObj = Array.isArray(obj) ? [] : {};
  for (const key in obj) {
    newObj[key] = deepCopy(obj[key]);
  }
  return newObj;
}

const personCopy = deepCopy(person);
personCopy.firstName = "Jane";
personCopy.address.city = "Los Angeles";

console.log(person.firstName); // 输出 "John"
console.log(person.address.city); // 输出 "New York"
console.log(personCopy.firstName); // 输出 "Jane"
console.log(personCopy.address.city); // 输出 "Los Angeles"

示例

示例一

假设有一个数组,数组中存放了一组学生的信息,信息包括学生姓名、学号、班级、性别等。现在需要将这组信息转换成对象存储,并将学号作为该对象的键值。

const students = [
  ["Tom", "001", "Class 1", "male"],
  ["Jerry", "002", "Class 2", "female"],
  ["Bob", "003", "Class 3", "male"]
];

const studentObj = {};

// 将数组转换为对象
for (const student of students) {
  const [name, id, className, gender] = student;
  studentObj[id] = {
    name: name,
    className: className,
    gender: gender
  };
}

console.log(studentObj["002"]); // 输出 { name: "Jerry", className: "Class 2", gender: "female" }

示例二

假设现有一个嵌套的对象,该对象表示一篇文章,文章包括标题、作者、日期、内容等信息。现在需要提取该对象的所有键名,以数组形式存储。

const article = {
  title: "JavaScript 基础教程",
  author: "John Doe",
  date: "2021-01-01",
  content: "这是一篇 JavaScript 基础教程的文章。"
};

const keys = [];

// 提取对象键名
for (const key in article) {
  if (article.hasOwnProperty(key)) {
    keys.push(key);
  }
}

console.log(keys); // 输出 ["title", "author", "date", "content"]

总结

本攻略介绍了 JavaScript 对象的基本概念、创建对象的方式、访问对象属性、浅拷贝和深拷贝以及两条示例说明。现在你应该已经掌握了 JavaScript 对象的基本使用方法,相信在实际开发中可以更好的运用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入学习JavaScript对象 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • ES6数组的扩展详解

    ES6数组的扩展详解 在ES6中,数组的概念得到了进一步扩展和完善,提供了一些新的方法和语法糖,使得开发人员在对数组进行操作时具有更多的便利性。 扩展运算符 在ES6中,一个新的运算符…被引入,称为扩展运算符(spread operator)。扩展运算符可以将数组展开为一系列的参数,方便我们对多个参数进行操作。 示例1:合并数组 const arr1 =…

    JavaScript 2023年5月27日
    00
  • input框中的name和id的区别

    当我们使用HTML表单时,为了方便后台处理表单输入数据,需要为表单中的input组件指定name属性值。同时,在页面的CSS和JavaScript中,也需要为input组件指定id属性值,以方便通过DOM操作网页元素。 name属性 作用 name属性指定表单字段的名称,该属性值会被提交到后端服务器用于请求参数的获取。 示例 <form method=…

    JavaScript 2023年6月10日
    00
  • JS实现倒计时(天数、时、分、秒)

    JS实现倒计时是一种常见的前端实现方式,在各类网站和应用中均有广泛应用。下面是JS实现倒计时的完整攻略: 步骤一:准备页面结构 首先需要在HTML页面中准备好倒计时所需的HTML结构,包括倒计时DOM元素的容器,每个倒计时数字占据的DOM元素等。 例如,下面是一个简单的倒计时页面结构示例: <div class="countdown-wrap…

    JavaScript 2023年5月27日
    00
  • 《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型

    《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型 引用类型 在 ECMAScript 中,引用类型指的是一种数据类型,这种数据类型是由多个不同的属性组成的对象。 Object 类型 Object 类型是 ECMAScript 中最基本的数据类型,也可以称之为引用类型的总称。对象是由键值对组成的无序集合。 创建一个 Obje…

    JavaScript 2023年5月27日
    00
  • JavaScript 截取字符串代码实例

    下面是“JavaScript 截取字符串代码实例”的完整攻略。 什么是字符串截取? 在编程中,字符串截取是指在一个字符串中截取一段指定长度的字符或某一范围内的字符。在 JavaScript 中,通过截取字符串可以获取到需要使用的部分内容,这在字符串处理中是很常见的操作。 JavaScript 截取字符串的方法 JavaScript 提供了几种截取字符串的方法…

    JavaScript 2023年5月28日
    00
  • js确认框confirm()用法实例详解

    JS确认框 confirm() 用法实例详解 简介 confirm()函数是JavaScript中常用的确认框(弹出框)函数之一,可以使用该函数显示一个询问是否确认执行某项操作的对话框,并根据用户的响应(点击确认或取消按钮)返回不同的结果。 语法 confirm()函数的语法格式如下: confirm(message) 其中,message参数是对话框中显示…

    JavaScript 2023年6月11日
    00
  • 兼容IE与firefox火狐的回车事件(js与jquery)

    为了兼容IE和Firefox的回车事件,我们可以使用原生的JavaScript或者jQuery来实现。下面我会分别提供两种实现方式的详细攻略。 1. 原生JavaScript实现回车事件 a. 监听keypress事件 我们可以通过监听keypress事件,在按下回车键时触发相应事件。 document.addEventListener("keyp…

    JavaScript 2023年6月11日
    00
  • js几个不错的函数 $$()

    当我们在操作 DOM 元素时,选择器是一个非常重要的部分。虽然在实现选择器时,使用 querySelector() 和 querySelectorAll() 不是最佳选择,但它们确实是使用最频繁的选择器。 然而,现在有一个新兴的 DOM 选择器,即 $$() 函数,它是一个 querySelectorAll() 的别名。虽然在一些场景下不如 querySel…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部