当前位置: 首页 > article >正文

经验笔记:JavaScript 中的对象

JavaScript 中的对象经验笔记

引言

JavaScript 中的对象是核心数据结构之一,它支持键值对的形式来存储数据,并且可以包含函数(称为方法)。对象是面向对象编程的基础,同时也是实现复杂数据结构的关键。本文将详细介绍如何在 JavaScript 中创建、操作和使用对象。

创建对象

使用对象字面量

对象字面量是最简单的方式,可以直接在代码中定义一个对象:

let person = {
  name: 'Alice',
  age: 30,
  greet: function() {
    console.log(`Hello, my name is ${this.name}`);
  }
};

person.greet();  // 输出: Hello, my name is Alice

使用构造函数

构造函数是一种创建对象的传统方式,使用 new 关键字:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.greet = function() {
  console.log(`Hello, my name is ${this.name}`);
};

let person = new Person('Alice', 30);
person.greet();  // 输出: Hello, my name is Alice

使用 class 语法(ES6+)

ES6 引入了更现代的类语法,使得面向对象编程更加直观:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  greet() {
    console.log(`Hello, my name is ${this.name}`);
  }
}

let person = new Person('Alice', 30);
person.greet();  // 输出: Hello, my name is Alice

访问对象属性

对象的属性可以通过点表示法或括号表示法来访问:

console.log(person.name);  // 'Alice'
console.log(person['age']);  // 30

修改对象属性

同样地,可以通过点表示法或括号表示法来修改对象的属性:

person.age = 31

添加方法

可以在对象上添加方法,这些方法通常是函数,用于执行某些操作:

person.greet = function() {
  console.log(`Hi there! I'm ${this.name}.`);
};
person.greet();  // 'Hi there! I'm Alicia.'

遍历对象的属性

可以使用for...in循环来遍历对象的所有可枚举属性:

for (let prop in person) {
  if (person.hasOwnProperty(prop)) {
    console.log(`${prop}: ${person[prop]}`);
  }
}

使用Object.keys(), Object.values(), Object.entries()

ES6 引入了几个实用工具方法来操作对象:

console.log(Object.keys(person));  // ['name', 'age', 'greet']
console.log(Object.values(person));  // ['Alicia', 31, [Function: greet]]
console.log(Object.entries(person));  // [['name', 'Alicia'], ['age', 31], ['greet', [Function: greet]]]

对象的继承和原型链

对象可以通过原型链来实现继承,即一个对象可以继承另一个对象的属性和方法:

let person2 = Object.create(person);
person2.name = 'Bob';
person2.greet();  // 'Hi there! I'm Bob.'

http://www.kler.cn/news/330152.html

相关文章:

  • 阿里云部署1Panel(失败版)
  • setState是同步更新还是异步更新
  • 基于Python的人工智能应用案例系列(18):SpaCy简历信息抽取
  • 旅游避坑指南
  • 基础岛第6关:OpenCompass 评测 InternLM-1.8B 实践
  • 深入了解 Ne10:优化 ARM 处理器的数字信号处理库
  • [C++][第三方库][gflags]详细讲解
  • Vue项目开发注意事项
  • Ubuntu22.04之测试本机网口速度(二百七十二)
  • PySpark把一列数据上下移动,时序数据
  • 【趣学Python算法100例】三色球
  • 认知杂谈94《菜鸟的自我修炼:创业的那些事》
  • 两数相加leetcode
  • 样式重置 normalize.css
  • 【零基础入门产品经理】学习准备篇 | 需要学一些什么呢?
  • 死锁的成因与解决方案
  • 景联文科技入选《2024中国AI大模型产业图谱2.0版》数据集代表厂商
  • Vue3.0面试题汇总
  • 如何实现一个Mini Spring Boot
  • Leecode热题100-283.移动零
  • AI学习指南深度学习篇-权重正则化的实现机制
  • 技术成神之路:设计模式(十八)适配器模式
  • 深度学习中的优化方法(Momentum,AdaGrad,RMSProp,Adam)详解及调用
  • 后台管理系统脚手架
  • ICM20948 DMP代码详解(58)
  • 深入探索 Pygwalker:Python 数据可视化的强大工具
  • STM32-MPU6050+DAM库源码(江协笔记)
  • Ps:打开与置入
  • C++——函数功能是:将两个两位数的正整数a、b合并成一个整数c,合并规则是将a的十位和个位分别放在c的千位和个位,将b的十位和个位分别放在c的十位和百位。
  • 小论树形dp