ES5 新增
-
严格模式(Strict Mode):ES5引入了严格模式,通过在脚本或函数的开头添加
"use strict";
来启用。严格模式提供了更严格的语法和错误检查,帮助开发者编写更安全、更规范的代码。 -
JSON对象支持:ES5将JSON(JavaScript Object Notation)作为一种原生的数据格式进行支持,提供了
JSON.parse()
和JSON.stringify()
方法,用于解析和序列化JSON数据。 -
新的数组方法:ES5新增了一些方便的数组方法,如
Array.prototype.forEach()
、Array.prototype.map()
、Array.prototype.filter()
、Array.prototype.reduce()
等,使得对数组的遍历和操作更加简洁和高效。 -
Function.prototype.bind():ES5引入了
Function.prototype.bind()
方法,用于绑定函数的上下文(this)和预设参数,返回一个新的函数。这样可以方便地创建具有固定上下文和参数的函数。 -
Object.create():ES5新增了
Object.create()
方法,用于创建一个新对象,以指定的原型对象作为新对象的原型。 -
Getter和Setter:ES5引入了Getter和Setter方法,通过
Object.defineProperty()
方法可以定义对象属性的Getter和Setter函数,用于对属性的读取和设置进行控制。 -
Array.isArray():ES5新增了
Array.isArray()
方法,用于判断一个值是否为数组类型。
ES6 新增
-
块级作用域变量(let和const):ES6引入了
let
和const
关键字,用于声明块级作用域的变量。相比于var
关键字,let
和const
具有更严格的作用域规则,可以避免变量提升和变量泄漏等问题。 -
箭头函数:ES6引入了箭头函数的语法,使用更简洁的语法定义函数。箭头函数具有更短的语法和更方便的上下文绑定,可以更好地处理this指向的问题。
-
模板字符串:ES6引入了模板字面量,使用反引号(`)来定义字符串,可以在字符串中插入变量和表达式,提供了更方便和可读性更高的字符串拼接方式。
-
解构赋值:ES6引入了解构赋值的语法,可以从数组或对象中提取值并赋给变量,使得代码更简洁和易读。
-
默认参数:ES6允许在函数定义时为参数提供默认值,当调用函数时没有传递对应参数时,将使用默认值。
-
扩展运算符:ES6引入了扩展运算符(...),可以将数组或对象展开为独立的元素,或将多个元素合并为一个数组或对象。
-
类和模块:引入了
class
关键字,可以更方便地定义类和面向对象的编程。同时,引入了模块化的语法,使用import
和export
关键字来导入和导出模块。模块化可以帮助开发者更好地组织和管理代码,提高代码的可维护性和可重用性。 -
Promise:提供了一种更优雅的处理异步操作的方式,避免了回调地狱。
-
简化的对象字面量:可以直接在对象字面量中定义方法,不再需要使用冒号和
function
关键字。 -
迭代器和生成器:ES6引入了迭代器和生成器的概念,迭代器提供了一种遍历数据结构的统一方式,而生成器则是一种特殊的函数,可以通过
yield
关键字暂停和恢复函数的执行。 -
Promise:ES6引入了Promise对象,用于处理异步操作。Promise可以更好地处理回调地狱问题,提供了一种更优雅和可读性更高的异步编程方式。
- 数组和对象的新方法:ES6新增了许多数组和对象的新方法,如
Array.from()
、Array.find()
、Array.includes()
、Object.assign()
等,提供了更方便和强大的操作数组和对象的方法。 - Set和Map数据结构:ES6引入了Set和Map两种新的数据结构,Set是一种无重复值的集合,Map是一种键值对的集合,提供了更方便和高效的数据存储和操作方式。
- for...of循环:ES6引入了for...of循环,用于遍历可迭代对象(如数组、字符串、Set、Map等),提供了一种更简洁和直观的遍历方式。
- Symbol:ES6引入了Symbol数据类型,表示独一无二的值,可以用作对象的属性名,提供了一种更安全和更灵活的属性定义方式。
- Proxy:ES6引入了Proxy对象,用于拦截和定制对象的操作,可以对对象的读取、赋值、函数调用等行为进行拦截和处理。
- Reflect:ES6引入了Reflect对象,提供了一组静态方法,用于操作对象,包括对象的属性获取、设置、函数调用等。
es7 新增
-
Array.prototype.includes
:新增了includes
方法,用于判断数组是否包含指定的元素,返回布尔值。 -
指数运算符:引入了指数运算符(
**
),用于计算一个数的幂次方。 -
Object.values
和Object.entries
:新增了Object.values
和Object.entries
方法,分别用于获取对象的值和键值对数组。 -
String.prototype.padStart
和String.prototype.padEnd
:新增了padStart
和padEnd
方法,用于在字符串的开头或结尾填充指定的字符,使字符串达到指定的长度。 -
Async/Await
:引入了async
和await
关键字,用于更方便地处理异步操作,使代码更加清晰和易读。 -
SharedArrayBuffer
和Atomics
:引入了SharedArrayBuffer
和Atomics
对象,用于在多个线程之间共享内存和进行原子操作
es8 新增
-
异步迭代器(Async Iterators):引入了
Symbol.asyncIterator
和for-await-of
语法,用于更方便地处理异步迭代操作。 -
Object.getOwnPropertyDescriptors
:新增了Object.getOwnPropertyDescriptors
方法,用于获取对象所有属性的描述符。 -
字符串填充方法改进:对
padStart
和padEnd
方法进行了改进,允许指定填充字符串的重复次数。
es9 新增
-
异步迭代器方法改进:对异步迭代器的方法进行了改进,引入了
return
和throw
方法。 -
Promise.prototype.finally
:新增了finally
方法,用于指定无论Promise状态如何都会执行的回调函数。 -
Rest/Spread 属性:引入了对象的Rest和Spread属性,类似于数组的Rest和Spread操作。
es10 新增
-
Array.prototype.flat
和Array.prototype.flatMap
:新增了flat
和flatMap
方法,用于扁平化数组和映射数组。 -
Object.fromEntries
:新增了Object.fromEntries
方法,用于将键值对数组转换为对象。 -
String.prototype.trimStart
和String.prototype.trimEnd
:新增了trimStart
和trimEnd
方法,用于去除字符串开头和结尾的空格。
标签:ES6,es5,对象,Object,简述,引入,Array,prototype,es From: https://www.cnblogs.com/wyhThink/p/17798359.html