深入学习JavaScript对象

深入学习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日

相关文章

  • javascript中数组array及string的方法总结

    JavaScript中数组(Array)及字符串(String)方法总结 在JavaScript中,数组以及字符串是非常重要的数据结构,同时也拥有很多的内置方法可以简化我们的开发流程。接下来将带你了解这些方法。 字符串(String)方法 1. indexOf 返回某个指定的子字符串在字符串中第一次出现的位置。 const str = "Hello…

    JavaScript 2023年5月27日
    00
  • 用JavaScript实现PHP的urlencode与urldecode函数

    实现PHP的urlencode与urldecode函数可以使用JavaScript中的encodeURI、encodeURIComponent和decodeURI、decodeURIComponent函数。下面是具体的实现攻略: 实现PHP urlencode函数 PHP中的urlencode函数用于将字符串以URL编码形式进行转换,可以使用JavaScri…

    JavaScript 2023年5月19日
    00
  • JS几个常用的函数和对象定义与用法示例

    JS常用的函数和对象非常多,以下是其中几个常用的函数和对象的定义及用法示例: 函数 1. parseInt() parseInt() 函数将一个字符串解析成整数,或者说提取数字部分,并返回整数。如果不能转换,则返回NaN。 注意:如果字符串以0x或0X前缀开头, parseInt() 函数会把数字识别为16进制数字。 语法: parseInt(string,…

    JavaScript 2023年5月27日
    00
  • Javascript基础学习笔记(菜鸟必看篇)

    我来讲解一下“Javascript基础学习笔记(菜鸟必看篇)”,这是一篇非常适合初学者的基础教程,内容涵盖了Javascript的基础语法和常用API。 基础语法 在这部分中,笔记介绍了Javascript的数据类型、变量、运算符、条件语句、循环语句等基础语法知识。 其中,有一段代码示例展示了如何使用条件语句来判断一个人的成绩等级: var score = …

    JavaScript 2023年5月18日
    00
  • 让我们一起来学习一下什么是javascript的闭包

    下面就来详细讲解一下“让我们一起来学习一下什么是javascript的闭包”的攻略。 什么是闭包? 闭包其实指的是一种能够访问外部函数作用域中变量的函数,也就是说,在一个函数内部定义的函数能够访问到这个函数的作用域中的变量。同时,这个内部函数也可以在外部被引用和调用。这里可以理解为函数自身以及函数被调用时所处的上下文环境。 闭包的实现原理 在JavaScri…

    JavaScript 2023年6月10日
    00
  • js实现简洁的滑动门菜单(选项卡)效果代码

    下面我将详细讲解“js实现简洁的滑动门菜单(选项卡)效果代码”的完整攻略。 一、需求分析 我们需要实现一个简洁的滑动门菜单效果,点击菜单选项时,显示对应的内容区域,同时将当前选项高亮显示。具体实现步骤如下: 定义html结构,包含菜单选项和对应的内容区域。 使用CSS设置菜单选项和内容区域的布局样式,使其呈现滑动门效果。 使用JavaScript实现点击事件…

    JavaScript 2023年6月10日
    00
  • XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)

    XMLHTTP 是浏览器内置的一种 HTTP 请求方式,可以通过 JavaScript 来进行调用发送 HTTP 请求,从而得到响应数据。在使用 XMLHTTP 时,常常会出现乱码的现象。有时是因为发送请求的页面本身的编码格式设置错误,使得接收到的数据乱码。也有可能是接收到数据中文字符的编码格式与前端页面编码格式不一致导致。 针对这种情况,我们可以采取一些措…

    JavaScript 2023年5月19日
    00
  • IE8 内存泄露(内存一直增长 )的原因及解决办法

    IE8 内存泄露问题是前端开发中经常遇到的一个问题,如果不及时解决,会导致浏览器卡顿、页面多次刷新等问题。本文将详细介绍 IE8 内存泄露问题的原因及解决办法。 原因 在 IE8 环境下,如过开发中出现以下几种情况,它们有可能会导致内存泄露问题: 循环引用 在 IE8 中,如果对象之间发生了循环引用,可能会导致内存泄露。例如,如果一个对象 A 中包含了一个对…

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