JS:ES6对象新增及方法
新增
1、变量声明:const和let
2、箭头函数
3、二进制和八进制字面量
4、对象和数组解构
Object.is(value1, value2)
map和reduce
map()
:接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回。
reduce{}
:接收一个函数(必须)和一个初始值(可选),该函数接收两个参数:
- 第一个参数是上一次 reduce处理的结果
- 第二个参数是数组中要处理的下一个元素
- includes() : 返回布尔值,表示是否找到了参数字符串;
- startsWith() : 返回布尔值,表示参数字符串是否在原字符串的头部;
- endsWith() : 返回布尔值,表示参数字符串是否在原字符串的尾部.
6、对象超类super()
7、for…of 和 for…in
8、ES6中的类 ES6 中支持 class 语法
9、扩展运算符... 扩展运算符(spread)是三个点(...), 将一个数组转为用逗号分隔的参数序列
10、Promise 简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。
11、转码器 Babel (babeljs.io) 是一个广为使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在浏览器或其他环境执行 。
-
属性的简洁表示法:ES6允许对象的属性直接写变量,这时候属性名是变量名,属性值是变量值。
const age = 12; const name = "Amy"; const person = {age, name}; console.log(person); //{age: 12, name: "Amy"}
-
方法也可以简写:
const person = { sayHi(){ console.log("Hi"); } } person.sayHi(); //"Hi"
-
属性名表达式:ES6允许用表达式作为属性名,但是一定要将表达式放在方括号内。
const obj = { ["he"+"llo"](){ return "Hi"; } } obj.hello(); //"Hi"
注意点:属性的简洁表示法和属性名表达式不能同时使用,否则会报错。
const hello = "Hello"; const obj = { [hello] }; console.log(obj); //SyntaxError: Unexpected token } const hello = "Hello"; const obj = { [hello+"2"]:"world" }; console.log(obj); //{Hello2: "world"}
(2)对象的扩展运算符
拓展运算符(...)用于取出参数对象所有可遍历属性然后拷贝到当前对象。
-
基本用法
let person = {name: "Amy", age: 15}; let someone = { ...person }; console.log(someone); //{name: "Amy", age: 15}
-
可用于合并两个对象
let age = {age: 15}; let name = {name: "Amy"}; let person = {...age, ...name}; console.log(person); //{age: 15, name: "Amy"}
注意:自定义的属性和拓展运算符对象里面属性的相同的时候
-
自定义的属性在拓展运算符后面,则拓展运算符对象内部同名的属性将被覆盖掉。
let person = {name: "Amy", age: 15}; let someone = { ...person, name: "Mike", age: 17}; console.log(someone); //{name: "Mike", age: 17}
-
自定义的属性在拓展运算度前面,则变成设置新对象默认属性值。
let person = {name: "Amy", age: 15}; let someone = {name: "Mike", age: 17, ...person}; console.log(someone); //{name: "Amy", age: 15}
-
拓展运算符后面是空对象,没有任何效果也不会报错。
let a = {...{}, a: 1, b: 2}; console.log(a); //{a: 1, b: 2}
-
拓展运算符后面是null或者undefined,没有效果也不会报错。
let b = {...null, ...undefined, a: 1, b: 2}; console.log(b); //{a: 1, b: 2}
(3)对象的新方法
Object.is(value1, value2):用来比较两个值是否严格相等,与(===)基本类似。
Object.is("q","q"); // true Object.is(1,1); // true Object.is([1],[1]); // false Object.is({q:1},{q:1}); // false
与===的区别
//一是+0不等于-0 Object.is(+0,-0); //false +0 === -0 //true //二是NaN等于本身 Object.is(NaN,NaN); //true NaN === NaN //false
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?