js版本ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13、ES14[2023]新特性

ES全称ECMAScript,ECMAScript是ECMA制定的标准化脚本语言,本文讲述Javascript[ECMAScript]版本ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13、ES14[2023]的新特性,帮助朋友们更好的熟悉和使用Javascript

ES5

1.严格模式

use strict

2.Object

   getPrototypeOf,返回一个对象的原型getOwnPropertyDescriptor,返回某个对象自有属性的属性描述符getOwnPropertyNames,返回一个数组,包括对象所有自由属性名称集合(包括不可枚举的属性)hasOwnProperty,给定属性存在于对象实例中,返回 trueisPrototypeOf,在原型链中出现过的原型,返回 truecreate,创建一个拥有指定原型和若干指定属性的对象defineProperty,为对象定义一个新属性,或者修改已有的属性,并对属性重新设置 getter 和 setter,这里可以被用作数据绑定的对象劫持用途defineProperties,在一个对象上添加或修改一个或者多个自有属性,与 defineProperty 类似seal,锁定对象,阻止修改现有属性的特性,并阻止添加新属性,但是可以修改已有属性的值freeze,冻结对象,阻止对对象的一切操作和更改,冻结对象将变成只读preventExtensions,让一个对象变得不可以扩展,也就是不能再添加新的属性isSealed,判断对象是否被锁定isFrozen,判断对象是否被冻结isExtensible,判断对象是否可以被扩展keys,返回一个由给定对象的所有可以枚举自身属性的属性名组成的数组

3.Array

Array.isArray,确定某个值到底是不是数组,不管它在哪个全局执行环境中创建push,接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度pop,在数组尾部移除最后一项,减少数组的 length 值,然后返回移除的项shift,移除数组中的第一项并返回该项,同时将数组长度减 1unshift,在数组前端添加任意个项,并返回新数组的长度reverse,反转数组项的顺序,返回排序后的数组sort,默认情况下,按升序排序数组项,返回排序后的数组concat,创建当前数组的一个副本,将接收到的参数添加到这个副本的末尾,返回新构建的数组join,用指定的字符拼接数组,返回拼接好的字符串slice,基于当前数组中的一个或多个创建一个新数组,不影响原始数组splice,根据传入参数不同,可以删除、插入、替换数组元素,返回一个数组,该数组中包含从原始数组中删除的项,如果没有删除任何项,则返回空数组indexOf,返回根据给定元素找到的第一个索引值,如果不存在则返回 -1lastIndexOf,返回指定元素在数组中的最后一个索引值,如果不存在则返回 -1every ,对数组中的每一项运行给定函数 ,如果该函数对每一项都返回 true,则返回 truefilter,对数组中的每一项运行给定函数 ,返回该函数会返回 true 的项组成的数组forEach,对数组中的每一项运行给定函数,没有返回值map,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组some,对数组中的每一项运行给定函数,如果函数对任一项返回 true,则返回 truereduce,接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终缩减为一个值reduceRight,接收一个函数作为累加器,数组中的每个值(从右到左)开始缩减,最终缩减为一个值

4.String

charAt,访问字符串中特定字符,返回给定位置的字符charCodeAt,访问字符串中特定字符,返回给定位置的字符的字符编码concat,将一个或多个字符串拼接起来,返回拼接得到的新字符串match,查找匹配的字符串,返回一个数组search,查找匹配的字符串,返回匹配项的索引,没有找到,返回 -1replace,替换字符串split,基于指定的分隔符将一个字符串分割成多个字符串,将结果放在一个数组中,并返回trim,创建一个字符串的副本,删除前置及后缀的所有空格,然后返回结果localeCompare,比较两个字符串slice,返回被操作字符串的一个子字符串substr,返回被操作字符串的一个子字符串substring,返回被操作字符串的一个子字符串

注意:slice、substr、substring 都接受一个或两个参数,第一个参数指定字符串的开始位置,第二个参数表示子字符串到哪里结束,slice 和 substring 的第二个参数指定的是子字符串的最后一个字符后面的位置,substr 第二个参数指定的是返回的字符个数,如果没有传递第二个参数,则将字符串的末尾作为结束位置。

5.Function

 	arguments.callee,该属性是一个指针,指向拥有这个 arguments 对象的函数arguments.caller,该属性保存着调用当前函数的函数的引用apply,在特定的作用域中调用函数,第一个参数是在其中运行函数的作用域,第二个是参数数组call,在特定的作用域中调用函数,第一个参数是在其中运行函数的作用域,其余参数直接传递给函数bind,创建一个函数的实例,其 this 值会被绑定到传给 bind 函数的值

6.JSON

	JSON.parse,解析字符串为 JSON 对象JSON.stringify,解析 JSON 对象为字符串JSON.valueOf,获取某个JSON 对象中的值JSON.toString,被调用时,会调用 Object 原型上的 toString 方法,会获的 JSON 对象的值并转为字符串,如果没有具体的值,则返回原型数组JSON.toLocaleString,也是Object 原型上的方法,经常会返回与 toString 相同内容,但是对于 Date 对象,则会返回格式化的时间字符串

7.其他

  Date.now,返回当前时间戳Date.toJSON,将 Date 对象转换为字符串,格式为 JSON 日期Math.min,确定一组数值中的最小值Math.max,确定一组数值中的最大值Math.random,返回大于 0 小于 1 的一个随机数Number.prototype.toFixed,按照指定的小数位返回数值的字符串表示

ES6(2015)

1.类

class Man {constructor(name) {this.name = '你好世界';}console() {console.log(this.name);}
}
const man = new Man('你好世界');
man.console(); // 你好世界
创建类的几种方法:在 JavaScript 中,创建类有几种不同的方式。以下是几种常见的方法:
1. 使用 class 关键字(ES6+)这是 ES6 引入的一种标准语法来创建类,语法简洁易懂。javascript
class Person {constructor(name, age) {this.name = name;this.age = age;}greet() {console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);}
}const person = new Person('Alice', 30);
person.greet();  // 输出: Hello, my name is Alice and I am 30 years old.2. 使用函数构造器(传统方式)在 ES6 之前,使用函数构造器来模拟类。函数构造器通过 new 关键字来创建实例,并通过原型链定义方法。javascript
function Person(name, age) {this.name = name;this.age = age;
}Person.prototype.greet = function() {console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
};const person = new Person('Bob', 25);
person.greet();  // 输出: Hello, my name is Bob and I am 25 years old.3. 使用 Object.create() 和构造函数通过 Object.create() 可以创建一个对象并设置它的原型,进而模拟类的行为。javascript
const PersonPrototype = {greet: function() {console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);}
};function Person(name, age) {const obj = Object.create(PersonPrototype);obj.name = name;obj.age = age;return obj;
}const person = Person('Charlie', 40);
person.greet();  // 输出: Hello, my name is Charlie and I am 40 years old.4. 使用 class 和继承(ES6+)ES6 的 class 语法支持继承,可以通过 extends 关键字来实现。javascript
class Animal {constructor(name) {this.name = name;}speak() {console.log(`${this.name} makes a noise.`);}
}class Dog extends Animal {constructor(name) {super(name);  // 调用父类的构造函数}speak() {console.log(`${this.name} barks.`);}
}const dog = new Dog('Rex');
dog.speak();  // 输出: Rex barks.5. 使用 ES6 class 和静态方法class 还支持静态方法,这些方法不会被实例化,而是直接在类本身上调用。javascript
class Calculator {static add(a, b) {return a + b;}static subtract(a, b) {return a - b;}
}console.log(Calculator.add(5, 3));  // 输出: 8
console.log(Calculator.subtract(5, 3));  // 输出: 26. 使用 ES5 构造函数结合原型链和静态方法在传统的 ES5 中,也可以通过原型链结合静态方法来模拟类的功能。function Car(make, model) {this.make = make;this.model = model;
}Car.prototype.drive = function() {console.log(`${this.make} ${this.model} is driving.`);
};Car.getBrand = function() {return 'Generic Car Brand';
};const car = new Car('Toyota', 'Camry');
car.drive();  // 输出: Toyota Camry is driving.
console.log(Car.getBrand());  // 输出: Generic Car Brand

2.模块化(ES Module)

// 模块 A 导出一个方法
export const sub = (a, b) => a + b;
// 模块 B 导入使用
import { sub } from './A';
console.log(sub(1, 2)); // 3

3.箭头(Arrow)函数

const func = (a, b) => a + b;
func(1, 2); // 3箭头函数(Arrow Function)是 JavaScript 中一种简化函数写法的语法,它使用 => 符号来定义函数。箭头函数提供了一种更简洁的方式来定义匿名函数,同时也改变了 this 关键字的行为。
基本语法javascript
const functionName = (parameters) => {// 函数体
};示例
1. 简单的箭头函数javascript
const add = (a, b) => {return a + b;
};console.log(add(2, 3));  // 输出: 52. 单行箭头函数(隐式返回)如果箭头函数的主体只有一个表达式,可以省略 return 关键字,并且该表达式的值会被自动返回。javascript
const add = (a, b) => a + b;console.log(add(2, 3));  // 输出: 53. 无参数的箭头函数如果没有参数,仍然需要一个空的括号。javascript
const greet = () => console.log('Hello!');greet();  // 输出: Hello!4. 只有一个参数的箭头函数如果函数只有一个参数,可以省略括号。javascript
const square = x => x * x;console.log(square(5));  // 输出: 25箭头函数的特点
1. this 绑定箭头函数最显著的特点是它不会创建自己的 this,而是继承外部上下文中的 this。这意味着箭头函数中的 this 与外部的 this 相同,而常规函数会根据调用的上下文来决定 this。javascript
// 使用常规函数时,`this` 指向的是调用函数的对象
function Person(name) {this.name = name;
}Person.prototype.greet = function() {console.log(`Hello, ${this.name}`);
};const john = new Person('John');
john.greet();  // 输出: Hello, John// 使用箭头函数时,`this` 继承自外部环境
function Person(name) {this.name = name;setTimeout(() => {console.log(`Hello, ${this.name}`);}, 1000<

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

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

相关文章

【R语言】绘图

一、散点图 散点图也叫X-Y图&#xff0c;它将所有的数据以点的形式展现在坐标系上&#xff0c;用来显示变量之间的相互影响程度。 ggplot2包中用来绘制散点图的函数是geom_point()&#xff0c;但在绘制前需要先用ggplot()函数指定数据集和变量。 下面用mtcars数据集做演示&a…

人工智能(AI)的不同维度分类

人工智能(AI)的分类 对机器学习进行分类的方式多种多样&#xff0c;可以根据算法的特性、学习方式、任务类型等不同维度进行分类这些分类都不是互斥的&#xff1a; 1、按数据模态不同:图像&#xff0c;文本&#xff0c;语音&#xff0c;多态等 2、按目标函数不同:判别式模型…

Java 大视界 -- Java 大数据未来十年的技术蓝图与发展愿景(95)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

【网络安全 | 漏洞挖掘】账户接管+PII+原漏洞绕过

文章目录 前言正文前言 本文涉及的所有漏洞测试共耗时约三周,成果如下: 访问管理面板,成功接管目标列出的3000多家公司。 获取所有员工的真实指纹、机密文件及个人身份信息(PII)。 绕过KYC认证,成功接管电话号码。 绕过此前发现的漏洞。 正文 在测试目标时,我发现了一…

MySQL的Union和OR查询

这里写目录标题 **1. 创建表和索引****2. 编写 UNION 查询****3. 使用 EXPLAIN 分析查询****4. 分析 EXPLAIN 结果****可能的结果分析**&#xff1a; **5. 验证索引合并****总结****1. UNION 操作的分析****为什么使用临时表&#xff1f;** 2. OR 条件的分析为什么使用索引合并…

二叉排序树 -- AVL树 红黑树

手撕 – AVL树、红黑树 个人主页&#xff1a;顾漂亮 文章专栏&#xff1a;Java数据结构 文章目录 手撕 -- AVL树、红黑树1.AVL树1.1AVL树的概念1.2AVL树的性质1.3AVL树的实现 -- Java代码1.4AVL树的性能分析 2.红黑树2.1概念2.2红黑树的性质2.3红黑树的实现2.4AVL树和红黑树的比…

在 .NET 8/9 中使用 AppUser 进行 JWT 令牌身份验证

文章目录 一、引言二、什么是 JSON Web 令牌&#xff1f;三、什么是 JSON Web 令牌结构&#xff1f;四、设置 JWT 令牌身份验证4.1 创建新的 .NET 8 Web API 项目4.2 安装所需的 NuGet 软件包4.3 创建 JWT 配置模型4.4 将 JWT 配置添加到您的 appsettings.json 中4.5 为 Config…

问卷数据分析|SPSS实操之相关分析

皮尔逊还是斯皮尔曼的选取主要看数据的分布 当数据满足正态分布且具有线性关系时&#xff0c;用皮尔逊相关系数 当有一个不满住时&#xff0c;用斯皮尔曼相关系数 1. 选择分析--相关--双变量 2. 将Z1-Y2加入到变量中&#xff0c;选择皮尔逊 3. 此处为结果&#xff0c;可看我案…

自动化办公|xlwings生成图表

在日常的数据分析和报告生成中&#xff0c;Excel图表是一个非常重要的工具。它能够帮助我们直观地展示数据&#xff0c;发现数据中的规律和趋势。然而&#xff0c;手动创建和调整图表往往耗时且容易出错。幸运的是&#xff0c;借助Python的xlwings库&#xff0c;我们可以自动化…

Javascript使用Sodium库实现 aead_xchacha20poly1305_ietf加密解密,以及与后端的密文交互

Node.js环境安装 sodium-native (其他库可能会出现加密解密失败&#xff0c;如果要使用不一样的库&#xff0c;请自行验证) npm install sodium-native 示例代码&#xff0c;使用的是 sodium-native v4.3.2 (其他版本可能会有变化&#xff0c;如果要使用&#xff0c;请自行验…

【Linux】匿名管道的应用场景-----管道进程池

目录 一、池化技术 二、简易进程池的实现&#xff1a; Makefile task.h task.cpp Initchannel函数&#xff1a; 创建任务&#xff1a; 控制子进程&#xff1a; 子进程执行任务&#xff1a; 清理收尾&#xff1a; 三、全部代码&#xff1a; 前言&#xff1a; 对于管…

使用LangChain构建第一个ReAct Agent

使用LangChain构建第一个ReAct Agent 准备环境 使用Anaconda 安装python 3.10 安装langchain、langchain_openai、langchain_community &#xff08;安装命令 pip install XXX&#xff09; 申请DeepSeek API&#xff1a;https://platform.deepseek.com/api_keys&#xff08;也…

多人协同创作gitea

多人协同创作gitea 在多台设备上协同使用Gitea&#xff0c;主要是通过网络访问Gitea服务器上的仓库来进行代码管理和协作。以下是一些关键步骤和建议&#xff0c;帮助你在多台设备上高效地使用Gitea进行协作&#xff1a; 1. 确保Gitea服务可访问 首先&#xff0c;你需要确保…

【个人开源】——从零开始在高通手机上部署sd(二)

代码&#xff1a;https://github.com/chenjun2hao/qualcomm.ai 推理耗时统计 单位/ms 硬件qnncpu_clipqnncpu_unetqnncpu_vaehtp_cliphtp_unethtp_vae骁龙8 gen124716.994133440.39723.215411.097696.327 1. 下载依赖 下载opencv_x64.tar,提取码: rrbp下载opencv_aarch64.t…

SpringCloud系列教程:微服务的未来(二十五)-基于注解的声明队列交换机、消息转换器、业务改造

前言 在现代分布式系统中&#xff0c;消息队列是实现服务解耦和异步处理的关键组件。Spring框架提供了强大的支持&#xff0c;使得与消息队列&#xff08;如RabbitMQ、Kafka等&#xff09;的集成变得更加便捷和灵活。本文将深入探讨如何利用Spring的注解驱动方式来配置和管理队…

学习经验分享【39】YOLOv12——2025 年 2 月 19 日发布的以注意力为核心的实时目标检测器

YOLO算法更新速度很快&#xff0c;已经出到V12版本&#xff0c;后续大家有想发论文或者搞项目可更新自己的baseline了。 代码&#xff1a;GitHub - sunsmarterjie/yolov12: YOLOv12: Attention-Centric Real-Time Object Detectors 摘要&#xff1a;长期以来&#xff0c;增强 …

Pytorch实现之特征损失与残差结构稳定GAN训练,并训练自己的数据集

简介 简介:生成器和鉴别器分别采用了4个新颖设计的残差结构实现,同时在损失中结合了鉴别器层的特征损失来提高模型性能。 论文题目:Image Generation by Residual Block Based Generative Adversarial Networks(基于残留块的生成对抗网络产生图像) 会议:2022 IEEE Int…

后“智驾平权”时代,谁为安全冗余和体验升级“买单”

线控底盘&#xff0c;正在成为新势力争夺下一个技术普及红利的新赛点。 尤其是进入2025年&#xff0c;比亚迪、长安等一线传统自主品牌率先开启高阶智驾的普及战&#xff0c;加上此前已经普及的智能座舱&#xff0c;舱驾智能的「科技平权」进一步加速行业启动「线控底盘」上车窗…

【Node.js】express框架

目录 1初识express框架 2 初步使用 2.1 安装 2.2 创建基本的Web服务器 2.3 监听方法 2.3.1 监听get请求 2.3.2 监听post请求 2.4 响应客户端 2.5 获取url中的参数(get) 2.5.1 获取查询参数 2.5.2 获取动态参数 2.6 托管静态资源 2.6.1 挂载路径前缀 2.6.2 托管多…

树形DP(树形背包+换根DP)

树形DP 没有上司的舞会 家常便饭了&#xff0c;写了好几遍&#xff0c;没啥好说的&#xff0c;正常独立集问题。 int head[B]; int cnt; struct node {int v,nxt; }e[B<<1]; void modify(int u,int v) {e[cnt].nxthead[u];e[cnt].vv;head[u]cnt; } int a[B]; int f[B]…