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

news2025/2/23 16:29:55

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

3.Array

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

4.String

charAt,访问字符串中特定字符,返回给定位置的字符
    charCodeAt,访问字符串中特定字符,返回给定位置的字符的字符编码
    concat,将一个或多个字符串拼接起来,返回拼接得到的新字符串
    match,查找匹配的字符串,返回一个数组
    search,查找匹配的字符串,返回匹配项的索引,没有找到,返回 -1
    replace,替换字符串
    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));  // 输出: 2

6. 使用 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));  // 输出: 5

2. 单行箭头函数(隐式返回)

如果箭头函数的主体只有一个表达式,可以省略 return 关键字,并且该表达式的值会被自动返回。

javascript
const add = (a, b) => a + b;

console.log(add(2, 3));  // 输出: 5

3. 无参数的箭头函数

如果没有参数,仍然需要一个空的括号。

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

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

相关文章

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;健…

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;应用程序安全是指识别和修复应用程序…

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

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

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

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

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

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

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 完全支持拉丁字母、…

【算法通关村 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.网页内…

nginx 反向代理 配置请求路由

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