JavaScript基础知识5(对象)

JavaScript基础知识5(对象)

    • 对象
      • 创建对象
        • 使用对象字面量
        • 使用 `new Object()`
      • 访问和修改属性
        • 点表示法
        • 方括号表示法
      • 动态添加和删除属性
        • 添加属性
        • 删除属性
      • 对象方法
      • 对象的遍历
      • 常用属性和方法
        • 数学常量
        • 数学函数
        • 三角函数
      • 使用示例
        • 生成随机整数
        • 计算圆的面积
        • 求最大值和最小值
      • 对象常用方法
        • `Object.keys()`
        • `Object.values()`
        • `Object.entries()`
      • 对象的合并
        • `Object.assign()`
        • 展开运算符 `...`
      • 示例代码
      • 总结
      • null
        • 遍历对象
    • 内置对象

对象

在 JavaScript 中,对象(Object)是用于存储相关数据和功能的集合。对象由键值对(属性)组成,键是字符串(或符号),值可以是任何类型,包括其他对象、函数、数组等。

创建对象

使用对象字面量

对象字面量是创建对象的最常见方法,使用花括号 {}

let person = {
    name: "John",
    age: 30,
    isStudent: true,
    greet: function() {
        console.log("Hello, my name is " + this.name);
    }
};

console.log(person.name); // 输出 "John"
console.log(person.age); // 输出 30
person.greet(); // 输出 "Hello, my name is John"

在这里插入图片描述

使用 new Object()

可以使用 new Object() 语法创建对象,不过这种方法不如对象字面量常用。

let person = new Object();
person.name = "John";
person.age = 30;
person.isStudent = true;
person.greet = function() {
    console.log("Hello, my name is " + this.name);
};

console.log(person.name); // 输出 "John"
console.log(person.age); // 输出 30
person.greet(); // 输出 "Hello, my name is John"

访问和修改属性

点表示法
let person = {
    name: "John",
    age: 30
};

console.log(person.name); // 输出 "John"
person.age = 35;
console.log(person.age); // 输出 35
方括号表示法

使用方括号表示法可以访问使用变量或包含特殊字符的属性。

let person = {
    "first name": "John",
    age: 30
};

console.log(person["first name"]); // 输出 "John"
person["age"] = 35;
console.log(person["age"]); // 输出 35

在这里插入图片描述

动态添加和删除属性

添加属性

可以在对象创建后动态添加属性。

let person = {
    name: "John"
};

person.age = 30;
console.log(person.age); // 输出 30
删除属性

使用 delete 运算符删除属性。

let person = {
    name: "John",
    age: 30
};

delete person.age;
console.log(person.age); // 输出 undefined

对象方法

对象的方法是作为对象属性的函数。方法可以通过对象字面量或动态添加。

let person = {
    name: "John",
    greet: function() {
        console.log("Hello, my name is " + this.name);
    }
};

person.greet(); // 输出 "Hello, my name is John"

对象的遍历

可以使用 for...in 循环遍历对象的属性。

let person = {
    name: "John",
    age: 30,
    isStudent: true
};

for (let key in person) {
  console.log(key)//顺序输出的是属性名:'name'、'age'、'isstudent'
  console.log(person[key])//顺序输出的是属性值:'john'、'30'、'true'
}

在 JavaScript 中,Math 对象是一个内置的对象,提供了一些基本的数学常量和函数。它不是一个构造函数,因此不能用作对象的模板。所有的属性和方法都是静态的,可以直接调用而无需创建 Math 对象的实例。

常用属性和方法

数学常量
  • Math.PI:圆周率(π),约为 3.14159。
  • Math.E:自然对数的底数(e),约为 2.718。
  • Math.LN2:2 的自然对数,约为 0.693。
  • Math.LN10:10 的自然对数,约为 2.302。
  • Math.LOG2E:以 2 为底的 e 的对数,约为 1.442。
  • Math.LOG10E:以 10 为底的 e 的对数,约为 0.434。
  • Math.SQRT2:2 的平方根,约为 1.414。
  • Math.SQRT1_2:1/2 的平方根,约为 0.707。
console.log(Math.PI); // 输出 3.141592653589793
console.log(Math.E); // 输出 2.718281828459045
数学函数
  • Math.abs(x):返回 x 的绝对值。
  • Math.ceil(x):向上取整,返回大于或等于 x 的最小整数。
  • Math.floor(x):向下取整,返回小于或等于 x 的最大整数。
  • Math.round(x):四舍五入,返回最接近 x 的整数。
  • Math.max(...values):返回一组数中的最大值。
  • Math.min(...values):返回一组数中的最小值。
  • Math.random():返回一个介于 0(包括)和 1(不包括)之间的伪随机数。
  • Math.pow(base, exponent):返回 baseexponent 次幂。
  • Math.sqrt(x):返回 x 的平方根。
  • Math.cbrt(x):返回 x 的立方根。
  • Math.log(x):返回 x 的自然对数(以 e 为底)。
  • Math.log2(x):返回 x 的以 2 为底的对数。
  • Math.log10(x):返回 x 的以 10 为底的对数。
  • Math.exp(x):返回 ex 次幂。
console.log(Math.abs(-5)); // 输出 5
console.log(Math.ceil(4.2)); // 输出 5
console.log(Math.floor(4.8)); // 输出 4
console.log(Math.round(4.5)); // 输出 5
console.log(Math.max(1, 2, 3)); // 输出 3
console.log(Math.min(1, 2, 3)); // 输出 1
console.log(Math.random()); // 输出 0 到 1 之间的随机数
console.log(Math.pow(2, 3)); // 输出 8
console.log(Math.sqrt(16)); // 输出 4
console.log(Math.cbrt(27)); // 输出 3
console.log(Math.log(Math.E)); // 输出 1
console.log(Math.log2(8)); // 输出 3
console.log(Math.log10(100)); // 输出 2
console.log(Math.exp(1)); // 输出 2.718281828459045
三角函数
  • Math.sin(x):返回 x 的正弦(弧度)。
  • Math.cos(x):返回 x 的余弦(弧度)。
  • Math.tan(x):返回 x 的正切(弧度)。
  • Math.asin(x):返回 x 的反正弦(弧度)。
  • Math.acos(x):返回 x 的反余弦(弧度)。
  • Math.atan(x):返回 x 的反正切(弧度)。
  • Math.atan2(y, x):返回从原点到点 (x, y) 的直线与 x 轴正向之间的角度(弧度)。
console.log(Math.sin(Math.PI / 2)); // 输出 1
console.log(Math.cos(Math.PI)); // 输出 -1
console.log(Math.tan(Math.PI / 4)); // 输出 1
console.log(Math.asin(1)); // 输出 1.5707963267948966 (π/2)
console.log(Math.acos(1)); // 输出 0
console.log(Math.atan(1)); // 输出 0.7853981633974483 (π/4)
console.log(Math.atan2(1, 1)); // 输出 0.7853981633974483 (π/4)

使用示例

生成随机整数

生成一个范围在 [min, max] 的随机整数:

function getRandomInt(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

console.log(getRandomInt(1, 10)); // 输出 1 到 10 之间的随机整数

在这里插入图片描述

计算圆的面积

给定半径计算圆的面积:

function getCircleArea(radius) {
    return Math.PI * Math.pow(radius, 2);
}

console.log(getCircleArea(5)); // 输出 78.53981633974483
求最大值和最小值

从一组数中找出最大值和最小值:

let numbers = [1, 2, 3, 4, 5];
let maxNum = Math.max(...numbers);
let minNum = Math.min(...numbers);

console.log(maxNum); // 输出 5
console.log(minNum); // 输出 1

对象常用方法

Object.keys()

返回对象自身可枚举属性的数组。

let person = {
    name: "John",
    age: 30
};

console.log(Object.keys(person)); // 输出 ["name", "age"]
Object.values()

返回对象自身可枚举属性值的数组。

let person = {
    name: "John",
    age: 30
};

console.log(Object.values(person)); // 输出 ["John", 30]
Object.entries()

返回对象自身可枚举属性的键值对数组。

let person = {
    name: "John",
    age: 30
};

console.log(Object.entries(person)); // 输出 [["name", "John"], ["age", 30]]

对象的合并

可以使用 Object.assign() 或展开运算符 ... 合并对象。

Object.assign()
let person = {
    name: "John"
};

let details = {
    age: 30,
    isStudent: true
};

let merged = Object.assign({}, person, details);
console.log(merged); // 输出 { name: "John", age: 30, isStudent: true }
展开运算符 ...
let person = {
    name: "John"
};

let details = {
    age: 30,
    isStudent: true
};

let merged = { ...person, ...details };
console.log(merged); // 输出 { name: "John", age: 30, isStudent: true }

示例代码

let car = {
    brand: "Toyota",
    model: "Corolla",
    year: 2020,
    displayInfo: function() {
        console.log(`Brand: ${this.brand}, Model: ${this.model}, Year: ${this.year}`);
    }
};

car.displayInfo(); // 输出 "Brand: Toyota, Model: Corolla, Year: 2020"

car.color = "Red";
console.log(car.color); // 输出 "Red"

delete car.year;
console.log(car.year); // 输出 undefined

for (let key in car) {
    if (car.hasOwnProperty(key)) {
        console.log(key + ": " + car[key]);
    }
}

let carKeys = Object.keys(car);
console.log(carKeys); // 输出 ["brand", "model", "color", "displayInfo"]

let carValues = Object.values(car);
console.log(carValues); // 输出 ["Toyota", "Corolla", "Red", ƒ]

let carEntries = Object.entries(car);
console.log(carEntries); // 输出 [["brand", "Toyota"], ["model", "Corolla"], ["color", "Red"], ["displayInfo", ƒ]]

总结

  • 创建对象:使用对象字面量 {}new Object()
  • 访问和修改属性:使用点表示法或方括号表示法。
  • 动态添加和删除属性:直接赋值添加属性,使用 delete 删除属性。
  • 对象方法:作为对象属性的函数。
  • 对象的遍历:使用 for...in 循环。
  • 对象常用方法Object.keys()Object.values()Object.entries()
  • 对象的合并:使用 Object.assign() 或展开运算符 ...

理解和掌握对象的各种操作,有助于编写更加灵活和高效的 JavaScript 代码。

null

null 也是 JavaScript 中数据类型的一种,通常只用它来表示不存在的对象。使用 typeof 检测类型它的类型时,结果为 object

遍历对象
let obj = {
    uname: 'pink'
}
for(let k in obj) {
    // k 属性名  字符串  带引号    obj.'uname'     k ===  'uname'
    // obj[k]  属性值    obj['uname']   obj[k]
}

for in 不提倡遍历数组 因为 k 是 字符串

内置对象

回想一下我们曾经使用过的 console.logconsole其实就是 JavaScript 中内置的对象,该对象中存在一个方法叫 log,然后调用 log 这个方法,即 console.log()

除了 console 对象外,JavaScritp 还有其它的内置的对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/774338.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

yolov8-seg分割模型TensorRt部署,去掉torch

已完成的yolov8-seg分割模型TensorRt部署 准备下载yolov8-seg模型转化为onnx和trt推理写好的推理接口 准备 https://github.com/songjiahao-wq/yolov8_seg_trtinference.git下载代码 安装TensorRt8.6版本,以及pip install -r requirements.txt 下载yolov8-seg模型…

Kafka系列之Kafka知识超强总结

一、Kafka简介 Kafka是什么 Kafka是一种高吞吐量的分布式发布订阅消息系统(消息引擎系统),它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览, 搜索和其他用户的行动)是在现代网络上的许多社…

个人引导页+音乐炫酷播放器(附加源码)

个人引导页音乐炫酷播放器 效果图部分源码完整源码领取下期更新内容 效果图 部分源码 //网站动态标题开始 var OriginTitile document.title, titleTime; document.addEventListener("visibilitychange", function() {if (document.hidden) {document.title "…

为什么英智智能宝能让律师工作事半功倍

大语言模型能够极大提高人们的知识理解能力和知识服务能力,法律服务是典型的知识服务领域,据悉律师有38%的任务都是重复性工作,这些任务有潜力被大模型替代。 但在法律行业中的高度专业且复杂的问题时,通用型大模型的回答虽能提供…

Dungeonborne卡顿怎么办 快速解决Dungeonborne卡顿问题

随着Dungeonborne游戏剧情的深入,玩家将逐渐解锁更多的地图和副本,每个区域都有其独特的生态和敌人。在探索的过程中,玩家不仅可以获得强大的装备和道具,还能结识到志同道合的伙伴,共同面对更强大的敌人。不过也有玩家…

谷粒商城学习笔记-05-项目微服务划分图

文章目录 一,商城业务服务-前端服务二,商城业务服务-后端服务三,存储服务四,第三方服务五,服务治理六,日志七,监控预警系统1,Prometheus2,Grafana3,Prometheu…

奥能电源应邀参加2024年顺丰创π创新大会

企业动态|杭州奥能董事长陈虹先生和常务副总金晖女士受邀出席创π-产业科技创新大会,深入探讨“双碳”目标下的产业转型与技术创新 近日,杭州奥能董事长陈虹先生和常务副总金晖女士应邀出席了在杭州举办的创π-产业科技创新大会。本次大会以产…

嵌入式学习——硬件(UART)——day55

1. UART 1.1 定义 UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种用于串行通信的硬件设备或模块。它的主要功能是将数据在串行和并行格式之间进行转换。UART通常用于计算机与外围设备或嵌入式系统之间的数据传输。…

Git仓库介绍

1. Github GitHub 本身是一个基于云端的代码托管平台,它提供的是远程服务,而不是一个可以安装在本地局域网的应用程序。因此,GitHub 不可以直接在本地局域网进行安装。 简介:GitHub是最流行的代码托管平台,提供了大量…

【Android源码】Gerrit上传Android源码

关于Gerrit的安装参考下面链接 【Android源码】Gerrit安装 要实现上传Android源码,需要经历以下几步: 下载Android代码创建源码仓库创建manifests仓库上传源码其他电脑下载源码 要证明Gerrit中的源码真实可用,肯定是以其他人能真正共享到代…

C++(第五天----多继承、虚继承、虚函数、虚表)

一、继承对象的内存空间 构造函数调用顺序&#xff0c;先调用父类&#xff0c;再调用子类 #include<iostream>using namespace std;//基类 父类 class Base{ public: //公有权限 类的外部 类的内部 Base(){cout<<"Base()"<<endl;}Base(int …

笔记本电脑升级实战手册[2]:清灰换硅脂

文章目录 前言&#xff1a;一、开盖拆卸二、清灰指南1. 电脑内部清灰2. 风扇清灰3. 清理散热铜管 三、更换硅脂总结&#xff1a; 前言&#xff1a; 这是笔记本电脑升级实战手册的第二篇文章&#xff0c;本篇主要是对电脑进行清灰换硅脂的处理的分享&#xff0c;使用电脑是华硕…

晨持绪电商:大学毕业生投资抖音网店怎么样

在这个数字化飞速发展的时代&#xff0c;传统的职业路径已不再是唯一的选择。对于充满激情和创意的大学毕业生来说&#xff0c;投资抖音网店或许是一个颇具前景的选择。 抖音作为一个流量巨大的社交媒体平台&#xff0c;为年轻人提供了一个展示自我、推广产品的绝佳舞台。与传统…

创新引领,构筑产业新高地

在数字经济的浪潮中&#xff0c;成都树莓集团以创新驱动为核心&#xff0c;通过整合行业资源、优化服务、培养数字产业人才等措施&#xff0c;致力于打造产业高地&#xff0c;推动地方经济的高质量发展。 一、创新驱动&#xff0c;引领产业发展 1、引入新技术、新模式&#xf…

平安养老险宿州中心支公司积极参与“78奋力前行”集体健步行活动

7月3日&#xff0c;平安养老保险股份有限公司&#xff08;以下简称“平安养老险”&#xff09;宿州中心支公司组织员工参加由宿州市保险行业协会2024年“78奋力前行”线下集体健步行活动。 平安养老险宿州中心支公司员工高举公司旗帜&#xff0c;与同业伙伴一起出发&#xff0…

maven设置阿里云镜像源(加速)

一、settings.xml介绍 settings.xml是maven的全局配置文件&#xff0c;maven的配置文件存在三个地方 项目中的pom.xml&#xff0c;这个是pom.xml所在项目的局部配置文件用户配置&#xff1a;${user.home}/.m2/settings.xml全局配置&#xff1a;${M2_HOME}/conf/settings.xml 优…

数据库国产化之路(一)

数据库国产化之路(一) 1、前言&#xff1a;适配海量数据库过程中的一些记录&#xff0c;备忘用 2、海量数据库基于的pg版本&#xff0c;查看PG_VERSION文件为9.2。 3、MySQL中的IF函数替代&#xff0c;一开始的方案是从网上找了个if函数&#xff0c;后来发现CASE WHEN其实能完成…

手把手教你生成一幅好看的AI图片

很多人看到别人用SD生成出来的图片感到非常的羡慕&#xff0c;因为即使给了他们最好的SD软件&#xff0c;他们也是词穷&#xff0c;不知道该如何去描述要生成的图片。 别急&#xff0c;这篇文章会一步步的教会你怎么才能生成一个好看的AI图片。 跟着我&#xff0c;别走丢。 …

iptables与firewalld

iptables Linux上常用的防火墙软件 1、 防火墙的策略 防火墙策略一般分为两种&#xff0c;一种叫通策略&#xff0c;一种叫堵策略&#xff0c;通策略&#xff0c;默认门是关着的&#xff0c;必须要定义谁能进。堵策略则是&#xff0c;大门是洞开的&#xff0c;但是你必须有身…

从数据到智能,英智私有大模型助力企业实现数智化发展

在数字化时代&#xff0c;数据已经成为企业最重要的资源。如何将这些数据转化为实际的业务价值&#xff0c;是每个企业面临的重要课题。英智利用业界领先的清洗、训练和微调技术&#xff0c;对企业数据进行深度挖掘和分析&#xff0c;定制符合企业业务场景的私有大模型&#xf…