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); // 输出 undefinedfor (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.mzph.cn/diannao/41208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QStringListModel 绑定到QListView

1.QStringListModel 绑定到listView,从而实现MV模型视图 2.通过QStringListModel的新增、删除、插入、上下移动,listView来展示出来 3.下移动一行,传入curRow2 的个人理解 布局 .h声明 private:QStringList m_strList;QStringListModel *m_m…

Matlab|基于改进鲸鱼优化算法的微网系统能量优化管理matlab-源码

目录 一、主要内容 二、部分代码 三、运行结果 四、下载链接 一、主要内容 该程序为《基于改进鲸鱼优化算法的微网系统能量优化管理》源码,主要内容如下: 针对包含多种可再生能源的冷热电联供型微网系统的能量优化问题,为了优化其运行过程…

中级职称如何查询真假呢?

关于中级职称如何查询真假,大家都会有疑问,办到职称的人员肯定是想查一查手里的证书,那么没有证书的人员也想了解一下,今天甘建二告诉大家几个通俗的职称查询方式: 1.电话查询(以前办理职称是这种查询方式…

20W+喜爱的Pathview网页版 | 整合表达谱数据KEGG通路可视化

Pathview网站简介 网址:https://pathview.uncc.edu/ 前段时间介绍了一个R包 — Pathview。它可以整合表达谱数据并可视化KEGG通路,操作是先自动下载KEGG官网上的通路图,然后整合输入数据对通路图进行再次渲染。从而对KEGG通路图进行一定程度…

RedHat9 | kickstart无人值守批量安装

一、知识补充 kickstart Kickstart是一种用于Linux系统安装的自动化工具,它通过一个名为ks.cfg的配置文件来定义Linux安装过程中的各种参数和设置。 kickstart的工作原理 Kickstart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,…

漏洞分析 | PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)

漏洞概述 PHP CGI(Common Gateway Interface)是在Windows平台上运行PHP的一种方式。CGI是一种标准接口,允许Web服务器与外部应用程序(如PHP脚本)进行交互,从而生成动态网页内容。 近期,PHP发布…

Logstash安装插件失败的问题

Logstash安装插件失败的问题 安装 logstash-output-jdbc 失败 报错为: Unable to download data from https://rubygems.org - Net::OpenTimeout: Failed to open TCP connection to rubygems.org:443 (execution expired) (https://rubygems.org/latest_specs.4.…

【算法 - 哈希表】两数之和

这里写自定义目录标题 两数之和题目解析思路解法一 :暴力枚举 依次遍历解法二 :使用哈希表来做优化 核心逻辑为什么之前的暴力枚举策略不太好用了?所以,这就是 这道题选择 固定一个数,再与其前面的数逐一对比完后&…

Linux系统(CentOS)安装iptables防火墙

1,先检查是否安装了iptables 检查安装文件-执行命令:rpm -qa|grep iptables 检查安装文件-执行命令:service iptables status 2,如果安装了就卸装(iptables-1.4.21-35.el7.x86_64 是上面命令查出来的版本) 执行命令&#xff1a…

蓝牙信标和蓝牙标签我们如何区分,区分方法有哪些?

蓝牙信标和蓝牙标签其实是两种不同的技术,很多人可能会把蓝牙信标和蓝牙标签搞混,因为区分不开来,但实际上,区分这两种技术也很简单,因为它们各自都有不一样的特性,通过这些特性,我们也能正常区…

相机光学(二十四)——CRA角度

CRA角度 0.参考资料1.什么是CRA角度2.为什么 CRA 会导致luma shading3.为什么 CRA 会导致color shading4.CRA相差过大的具体表现5.CRA Matching6.怎样选择sensor的CRA 0.参考资料 1.芯片CRA角度与镜头的匹配关系(一)   2.芯片CRA角度与镜头选型的匹配关…

爬虫进阶:Selenium与Ajax的无缝集成

爬虫与Ajax的挑战 Ajax(Asynchronous JavaScript and XML)允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分内容。这为用户带来了更好的体验,但同时也使得爬虫在抓取数据时面临以下挑战: 动态内容加载&#xff…

vue中数组出现__ob__: Observer属性,导致不能正确使用问题解决

直接上图,如下图,数组中出现__ob__: Observer属性,导致无法取值。 解决方案为:JSON.parse(JSON.stringify(数组变量名))深拷贝数组,重新生成一个可枚举数组。 // 处理代码如let tempIds JSON.parse(JSON.stringify(i…

一文带你初探FreeRTOS信号量

本文记录我初步学习FreeRTOS的信号量的知识,在此记录分享,希望我的分享对你有所帮助! 什么是信号量 在FreeRTOS中,信号量(Semaphore)是一种用于任务间同步和资源共享的机制。信号量主要用于管理对共享资源的…

Cgi上传文件 注意事项

//核心代码 ofstream outfile("/opt/software/" file.getFilename(), ios::out | ios::binary); outfile << file.getData(); //错误方式&#xff1a;outfile << file.getData() <<endl; outfile.close(); 参考博客&#xff1a; https://blog.cs…

HTML如何在图片上添加文字

HTML如何在图片上添加文字 当我们开发一个页面&#xff0c;插入图片时&#xff0c;需要有一组文字对图片进行描述。那么HTML中如何在图片上添加文字呢&#xff1f;这篇文章告诉你。 先让我们来看下效果图&#xff1a; 句子“这是一张夜空图片”被放置在了图片的左下角。 那么…

Leetcode.342 4的幂

给定一个整数&#xff0c;写一个函数来判断它是否是 4 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 整数 n 是 4 的幂次方需满足&#xff1a;存在整数 x 使得 n 4x 示例 1&#xff1a; 输入&#xff1a;n 16 输出&#xff1a;true示…

微信小程序的智慧物流平台-计算机毕业设计源码49796

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3研究方法 1.4开发技术 1.4.1 微信开发者工具 1.4.2 Node.JS框架 1.4.3 MySQL数据库 1.5论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 用户登录流程 2.2.2 数据删除流程 2.3 系统功能分…

ESP32CAM物联网教学09

ESP32CAM物联网教学09 摄像头配上显示屏 小智给摄像头配上了一块液晶显示屏,ESP32Cam变得更加酷炫了,应用也更加广泛了。 TFT彩色显示屏从第一课的CameraWebServer开始,我们一直都是利用浏览器来查看显示摄像头的视频流,都需要借助这个网页提供的服务。 可以让ESP32Cam开…

【案例干货】智能导览智慧景区系统小程序开发主要功能

智能景区/园区导览系统是一种利用云计算、物联网等新技术&#xff0c;通过互联网或移动互联网&#xff0c;借助便携的终端上网设备&#xff0c;为游客提供全方位、便捷化街区导航与信息服务的系统。 其主要功能可以归纳为以下几个方面&#xff1a; 1. 街区资讯展示 信息介绍&…