JavaScript基础知识5(对象)

news2024/11/28 2:40:10

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.coloradmin.cn/o/1897101.html

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

相关文章

Zabbix 配置 VMware 监控

Zabbix监控VMware 官方文档:https://www.zabbix.com/documentation/current/en/manual/vm_monitoring Zabbix 可以使用低级发现规则自动发现 VMware 虚拟机管理程序和虚拟机,并根据预定义的主机原型创建主机来监控它们。Zabbix 还包括用于监控 VMware …

VirtualBox的windows server 2016设置主机和虚拟机共享文件夹

文章目录 安装步骤1. windows server 2016安装增强功能2.上述安装完成之后,需要做共享文件夹,在宿主机,新建一个test文件夹,做共享设置,如下图:3.然后打开虚拟机,设置文件共享 安装步骤 1. win…

字节码编程javassist之定义方法和返回值

写在前面 源码 。 本文看下如何使用javassist来定义方法和返回值。 1:源码 package com.dahuyou.javassist.generateFieldAndMethod;import javassist.*;import java.lang.reflect.Method;public class JustDoIt222 {public static void main(String[] args) thr…

跨平台Ribbon UI组件QtitanRibbon全新发布v6.7.0——支持Qt 6.6.3

没有Microsoft在其办公解决方案中提供的界面,就无法想象现代应用程序,这个概念称为Ribbon UI,目前它是使应用程序与时俱进的主要属性。QtitanRibbon是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,QtitanRibb…

SOLIDWORKS分期许可(订阅形式),降低前期的投入成本!

SOLIDWORKS 分期许可使您能够降低前期软件成本,同时提供对 SOLIDWORKS 新版本和升级程序的即时访问,以及在每个期限结束时调整产品的灵活性,帮助您跟上市场需求和竞争压力的步伐。 目 录: ★ 1 什么是SOLIDWORKS分期许可 ★ 2 …

Cube-Studio:开源大模型全链路一站式中台

开源项目,欢迎star哦,https://github.com/data-infra/cube-studio 一款真正意义的 LLMOps 框架 LLMOps(Large Language Model Operations)是一个涵盖了大型语言模型(如GPT系列)开发、部署、维护和优化的一…

【EI会议/稳定检索】2024年应用数学、化学研究与物理工程国际会议(AMPE 2024)

2024 International Conference on Applied Mathematics, Chemical Research, and Physical Engineering 2024年应用数学、化学研究与物理工程国际会议(AMPE 2024) 【会议信息】 会议简称:AMPE 2024 大会时间:点击查看 截稿时间:官网查看 大…

pp 二 物料bom (CS01 CS02 CS03)

02:bom建了以后不能做生产,也不能下达计划 03:不能下达成本,下达订单 bom里面的存储地点高于物料主数据里面的存储地点(mrp视图2) 生产存储地点作为组件角度是一个发料得存储地点 但是作为一个成品则是成…

Restore Equipment

Restore Equipment 魔兽世界 - 盗号申请 - 恢复装备流程 魔兽和网易真的不行啊 1)这个装备本来就是兑换的竟然可以卖NPC 2)针对这个情况竟然无法挽回 3)设计理念真的不得不吐槽一下 4)策划真的不咋样,要是有机会我要自…

mssql查询历史执行过的语句日志

SELECT deqs.creation_time,dest.text AS [SQL Text],deqs.execution_count,deqs.total_elapsed_time,deqs.total_worker_time FROM sys.dm_exec_query_stats AS deqs CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest--where dest.text like %这个是我的条件&#…

数学建模----滑翔伞伞翼面积的设计及运动状态描述

摘要 滑翔伞作为一项融合了挑战、冒险和刺激于一体的运动,近年来在全球范围内受到了广泛的关注。滑翔伞在救援、探险、体育、娱乐、环保和交通等领域的应用展现了其重要价值。然而,中国在滑翔伞领域尚未取得突破,缺乏全球影响力和竞争力。因此…

Keepalived+LVS实现负责均衡,高可用的集群

Keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器,管理服务器池,而不仅仅用作双机热备。使用Keepalived构建LVS群集更加简便易用,主要优势体现在:对LVS负责调度器实现热备切换…

iPad电容笔什么牌子好?2024最值得买的五款高性价比电容笔推荐!

现在平板和电容笔在一定程度上可以替代传统的笔和纸,不仅减少纸张浪费,还可以导入教材和习题册。只需携带它们就无需携带厚重的书本,这种环保、便捷、方便的特点吸引了越来越多的用户。但电容笔品牌的不断涌现,也让用户更加难以抉…

零基础STM32单片机编程入门(七)定时器PWM波输出实战含源码视频

文章目录 一.概要二.PWM产生框架图三.CubeMX配置一个TIME输出1KHZ,占空比50%PWM波例程1.硬件准备2.创建工程3.测量波形结果 四.CubeMX工程源代码下载五.讲解视频链接地址六.小结 一.概要 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写&…

配置基于用户认证的虚拟主机

添加账号abc [rootlocalhost conf.d]# htpasswd -c /etc/httpd/zhanghao abc New password: Re-type new password: Adding password for user abc添加账号tom [rootlocalhost conf.d]# htpasswd /etc/httpd/zhanghao tom New password: Re-type new password: Adding pa…

C#桌面应用开发:番茄定时器

C#桌面应用开发:番茄定时器 1、环境搭建和工程创建: 步骤一:安装visual studio2022 步骤二:新建工程 2、制作窗体部件 *踩过的坑: (1)找不到工具箱控件,现象如下:…

昇思MindSpore学习笔记4-02生成式--DCGAN生成漫画头像

摘要: 记录了昇思MindSpore AI框架使用70171张动漫头像图片训练一个DCGAN神经网络生成式对抗网络,并用来生成漫画头像的过程、步骤。包括环境准备、下载数据集、加载数据和预处理、构造网络、模型训练等。 一、概念 深度卷积对抗生成网络DCGAN Deep C…

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

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

[作业]10 枚举-排列类

作业&#xff1a; 已做&#xff1a; #include <iostream> using namespace std; int n; int a[100]; void func(int ,int); int main(){cin>>n;func(0,n);return 0; } void func(int k,int m){if(k>m-1){for(int i0;i<m;i){cout<<a[i];}cout<<en…

【高性能服务器】select模型

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 IO多路复用就是复用…