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

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<

相关文章:

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 strict2.Object getPrototypeOf,返回一个对象的原…...

vxe-table实现动态列

vxe-table实现动态列 1.动态列解释2.解决步骤2.1将后端返回的动态列表头&#xff0c;按照格式拼接在固定列表头上2.2将后端返回的列表数据按照键值对格式组装 1.动态列解释 正常列表是有固定的列&#xff1b;我的需求是&#xff0c;最初只知道表格的固定两列&#xff0c;查询数…...

尚硅谷爬虫note009

一、jsonpath 1.安装 pip install jsonpath 2.使用 只能解析本地文件 .json文件 {"store": {"book": [{"category": "reference","author": "Nigel Rees","title": "Sayings of the Century&qu…...

verilog笔记

Verilog学习笔记&#xff08;一&#xff09;入门和基础语法BY电棍233 由于某些不可抗拒的因素和各种的特殊原因&#xff0c;主要是因为我是微电子专业的&#xff0c;我需要去学习一门名为verilog的硬件解释语言&#xff0c;由于我是在某西部地区的神秘大学上学&#xff0c;这所…...

Java+SpringBoot+Vue+数据可视化的综合健身管理平台(程序+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统介绍 在当今社会&#xff0c;随着人们生活水平的不断提高和健康意识的日益增强&#xff0c;健…...

正确清理C盘空间

一.系统清理 正确清理C盘空间主要是删除不需要的文件和应用程序&#xff0c;以释放磁盘空间。以下是一些常用的方法&#xff1a; 删除临时文件&#xff1a;在Windows搜索框中输入“%temp%”&#xff0c;打开临时文件夹&#xff0c;将其中的文件全部删除。 清理回收站&#xf…...

网站快速收录:如何设置robots.txt文件?

为了网站快速收录而合理设置robots.txt文件&#xff0c;需要遵循一定的规则和最佳实践。robots.txt文件是一个纯文本文件&#xff0c;它告诉搜索引擎爬虫哪些页面可以访问&#xff0c;哪些页面不可以访问。以下是如何设置robots.txt文件以助于网站快速收录的步骤和要点&#xf…...

python绘制年平均海表温度、盐度、ph分布图

python绘制年平均海表温度、盐度、ph图 文章目录 python绘制年平均海表温度、盐度、ph分布图前言一、数据准备二、代码编写2.1. python绘制年平均海表温度&#xff08;主要&#xff09;2.2. python绘制年平均海表盐度&#xff08;选看&#xff09;2.3. python绘制年平均海表ph&…...

网络空间安全(2)应用程序安全

前言 应用程序安全&#xff08;Application Security&#xff0c;简称AppSec&#xff09;是一个综合性的概念&#xff0c;它涵盖了应用程序从开发到部署&#xff0c;再到后续维护的整个过程中的安全措施。 一、定义与重要性 定义&#xff1a;应用程序安全是指识别和修复应用程序…...

HTTPS 通信流程

HTTPS 通信流程时序图&#xff1a; #mermaid-svg-HWoTbFvfih6aYUu6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-HWoTbFvfih6aYUu6 .error-icon{fill:#552222;}#mermaid-svg-HWoTbFvfih6aYUu6 .error-text{fill:#…...

全链路优化:如何让单点登录认证接口并发性能翻倍?

背景 最近针对一个单点登录认证项目进行性能优化&#xff0c;在 8核 16G 环境下的认证并发能力从每秒800次提升至每秒1600次&#xff0c;性能提升一倍&#xff0c;整理此次优化过程中的相关性能优化操作总结和大家分享一下。 Nginx配置优化 在并发认证场景下&#xff0c;Ngi…...

http代理IP怎么实现?如何解决代理IP访问不了问题?

HTTP代理是一种网络服务&#xff0c;它充当客户端和目标服务器之间的中介。当客户端发送请求时&#xff0c;请求首先发送到代理服务器&#xff0c;然后由代理服务器转发到目标服务器。同样&#xff0c;目标服务器的响应也会先发送到代理服务器&#xff0c;再由代理服务器返回给…...

设计模式教程:迭代器模式(Iterator Pattern)

迭代器模式&#xff08;Iterator Pattern&#xff09;是设计模式中的一种行为型模式&#xff0c;它允许顺序访问一个集合对象中的元素&#xff0c;而无需暴露集合对象的内部结构。换句话说&#xff0c;迭代器模式提供了一个方法&#xff0c;能让你遍历集合中的元素&#xff0c;…...

AI Agent架构深度解析:从ReAct到AutoGPT,自主智能体的技术演进与工程实践

前言 觉得不错就点个赞吧&#xff01;。 一、AI Agent技术架构演进图谱 &#xff08;配图&#xff1a;AI Agent架构演进时间轴&#xff0c;标注关键技术节点&#xff09; 1.1 三代架构对比分析 架构类型代表系统核心特征局限性反应式DeepBlue预置规则库无长期记忆认知式Wats…...

USC安防平台之地图临近资源列表

USC安防平台通过配置多层地图&#xff0c;并把相关的摄像机和门禁对象配置到数据上&#xff0c;用户可以方便的在地图上查看并操作。 但是对于大型的视频监控项目&#xff0c;同一个经纬度可能安装了很多台摄像机&#xff0c;这时候就需要显示同一个经纬度的临近资源列表&…...

Flutter 启动优化

Dart VM在Flutter中的作用是什么&#xff1f;它负责执行Dart代码&#xff0c;无论是JIT还是AOT模式都需要它。在JIT模式下&#xff0c;VM随应用一起运行&#xff0c;而在AOT模式下&#xff0c;代码已经被编译成机器码&#xff0c;VM可能不需要运行时存在&#xff1f;不过实际上…...

JavaScript数组方法reduce详解

JavaScript数组方法reduce详解 目录 JavaScript数组方法reduce详解一&#xff0c;前言二&#xff0c;核心语法三&#xff0c;案例1.求和2.找最大值3.数组转对象4.复合操作&#xff08;同时实现 map filter&#xff09; 四&#xff0c;常见错误1.空数组没有初始值2.没有返回累加…...

计算机毕业设计SpringBoot+Vue.js服装商城 服装购物系统(源码+LW文档+PPT+讲解+开题报告)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

Web自动化中Selenium下Chrome与Edge的Webdriver常用Options参数

目录 引言 说明 Add_argument() 添加方式 常用参数 Add_experimental_option() 添加方式 常用方法 任务结束后仍然保持浏览器打开 禁用“Chrome 正受到自动测试软件的控制”提示 设置下载路径 禁用弹窗拦截 禁用图片加载 禁用 JavaScript 注意 引言 …...

现代未来派品牌海报徽标设计无衬线英文字体安装包 THANKS LAB

THANK LAB 是一种高级未来主义的软字体&#xff0c;将时尚的现代设计与光滑圆润的边缘相结合&#xff0c;营造出大胆而平易近人的美感。这款字体非常适合品牌、海报、标题、UI/UX 和科幻主题项目&#xff0c;旨在激发创造力。THANK LAB Futuristic Soft Font 完全支持拉丁字母、…...

《AI与NLP:开启元宇宙社交互动新纪元》

在科技飞速发展的当下&#xff0c;元宇宙正从概念逐步走向现实&#xff0c;成为人们关注的焦点。而在元宇宙诸多令人瞩目的特性中&#xff0c;社交互动体验是其核心魅力之一。人工智能&#xff08;AI&#xff09;与自然语言处理&#xff08;NLP&#xff09;技术的迅猛发展&…...

【算法通关村 Day6】二叉树层次遍历

树与层次遍历青铜挑战 理解树的结构 通过中序和后序遍历序列恢复二叉树是一个经典的二叉树构建问题。给定二叉树的中序遍历序列和后序遍历序列&#xff0c;我们可以利用以下步骤进行恢复。 思路&#xff1a; 后序遍历的特点&#xff1a; 后序遍历的最后一个节点是树的根节点…...

安全面试2

文章目录 简单描述一下什么是水平越权&#xff0c;什么是垂直越权&#xff0c;我要发现这两类漏洞&#xff0c;那我代码审计要注意什么地方水平越权&#xff1a;垂直越权&#xff1a;水平越权漏洞的审计重点垂直越权漏洞的审计重点 解释一下ssrf漏洞原理攻击场景修复方法 横向移…...

【JavaScript进阶】构造函数数据常用函数

目录 本章节用到的所有素材都可以找到&#xff1a;素材自取~~~~ 1、深入对象 1.1创建对象三种方式 1.2 构造函数 练习 利用构造函数创建多个对象 实例化执行过程 1.3实例成员&静态成员 2. 内置构造函数 2.1 Object 2.2 Array 练习 员工涨薪计算成本 2.3 St…...

在PiscTrace开发者版上直接处理图像色阶分布

在图像处理和计算机视觉中&#xff0c;色阶分布&#xff08;或称灰度分布&#xff09;是描述图像中像素强度分布的一个重要概念。它对于理解图像的亮度、对比度、纹理和细节等方面具有关键作用。通过色阶分布的分析&#xff0c;我们能够获得图像的整体信息&#xff0c;从而帮助…...

趣味数学300题1981版-十五个正方形

分析&#xff1a;移动两根变成11个正方形很简单&#xff1a; 移动4根变成15个正方形&#xff0c;分析&#xff1a; 一个田字格包含5个正方形&#xff0c;若要15个正方形需要3个田字格&#xff0c;如果3个田字格完全不重合&#xff0c;需要6*318根火柴。如果合并正方形的边&…...

Selenium实战案例1:论文pdf自动下载

在上一篇文章中&#xff0c;我们介绍了Selenium的基础用法和一些常见技巧。今天&#xff0c;我们将通过中国科学&#xff1a;信息科学网站内当前目录论文下载这一实战案例来进一步展示Selenium的web自动化流程。 目录 中国科学&#xff1a;信息科学当期目录论文下载 1.网页内…...

前端面试-JavaScript 数据类型检测全解

目录 一、基础检测方法 二、方法深度解析 1. typeof 运算符 2. instanceof 运算符 3. 终极检测方案 三、特殊场景检测方案 四、手写实现原理 1. 通用类型检测函数 2. 改进版数组检测&#xff08;兼容旧浏览器&#xff09; 五、常见面试陷阱 六、最佳实践指南 七、扩…...

nginx 反向代理 配置请求路由

nginx | 反向代理 | 配置请求路由 nginx简介 Nginx&#xff08;发音为“Engine-X”&#xff09;是一款高性能、开源的 Web 服务器和反向代理服务器&#xff0c;同时也支持邮件代理和负载均衡等功能。它由俄罗斯程序员伊戈尔西索夫&#xff08;Igor Sysoev&#xff09;于 2004…...

用户中心项目教程(十)---注册里面的重定向排查和相关的修改

文章目录 1.注册逻辑的设计和实现2.解决自带的这个重定向的问题3.增加属性的相关操作4.关于如何修改页面上面的绿色按钮 1.注册逻辑的设计和实现 上次说到了的是登录功能&#xff0c;我们使用数据库里面存在的这个存在的账户和密码进行登录&#xff0c;但是是无法进行跳转的&a…...