我的编程空间,编程开发者的网络收藏夹
学习永远不晚

es6新特性怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

es6新特性怎么使用

这篇“es6新特性怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“es6新特性怎么使用”文章吧。

es6新特性有:1、let和const;2、symbol;3、模板字符串;4、解构表达式;5、对象方面,如Map和Set;6、函数方面,如参数默认值和箭头函数;7、class关键字;8、promise和proxy;9、模块化;10、运算符。

ES6新特性

1、let和const

2、symbol

Symbol是ES6中引入的一种新的基本数据类型,用于表示一个独一无二的值,不能与其他数据类型进行运算。它是JavaScript中的第七种数据类型,与undefined、null、Number(数值)、String(字符串)、Boolean(布尔值)、Object(对象)并列。

你可以这样创建一个Symbol值:

const a = Symbol();
console.log(a);  //Symbol()

//因为Symbol是基本数据类型,而不是对象,不能 new 。
const a = new Symbol();//报错,Symbol is not a constructor

使用Symbol()创建一个Symbol类型的值并赋值给a变量后,你就得到了一个在内存中独一无二的值。现在除了通过变量a,任何人在任何作用域内都无法重新创建出这个值

const a = Symbol();const b = Symbol();

内存解构图
es6新特性怎么使用

3、模板字符串

  • 在ES6之前,处理模板字符串:
    通过“\”和“+”来构建模板

  • 对ES6来说:
    ${}来界定;
    反引号(``)直接搞定;

<script>
     url="xxxxxx"
      // es6之前
      let html="<div>"+
                 " <a>"+url+"</a>"+
              "</div>";
//es6
      let eshtml=`<div>
                  <a>${url}</a>
              </div>`</script>

3.1 字符串新方法(补充)

  • includes()判断字符串是否包含参数字符串,返回boolean值。

  • startsWith() / endsWith(),判断字符串是否以参数字符串开头或结尾。返回boolean值。这两个方法可以有第二个参数,一个数字,表示开始查找的位置。

let str = 'blue,red,orange,white';str.includes('blue');
//truestr.startsWith('blue');
//true
str.endsWith('blue');
//false
  • repeat()方法按指定次数返回一个新的字符串。

console.log('hello'.repeat(2));   
//'hellohello'
  • padStart()/padEnd(),用参数字符串按给定长度从前面或后面补全字符串,返回新字符串。

let arr = 'hell';console.log(arr.padEnd(5,'o'));  
//'hello'console.log(arr.padEnd(6,'o'));  
//'helloo'console.log(arr.padEnd(6));  
//'hell  ',如果没有指定将用空格代替
console.log(arr.padStart(5,'o'));  
//'ohell'

4、解构表达式

解构赋值是对赋值运算符的扩展。它是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。
字符串、以及ES6新增的MapSet 都可以使用解构表达式

4.1 数组解构

let [a,b,c] = [1,2,3];console.log(a,b,c);    //1,2,3
let [a,b,c] = [1,,3];console.log(a,b,c);    //1,undefined,3
let [a,,b] = [1,2,3];console.log(a,b);//1,3
let [a,..b] = [1,2,3];  
//...是剩余运算符,表示赋值运算符右边除第一个值外剩余的都赋值给b
console.log(a,b);
//1,[2,3]

4.2 对象解构

对象的解构赋值和数组类似,不过左边的变量名需要使用对象的属性名,并且用大括号{}而非中括号[]

let obj = { 
name: "ren",
age: 12,
sex: "male" };let { name, age, sex } = obj;console.log(name, age, sex);
//'ren' 12 'male'let { name: myName, age: myAge, sex: mySex } = obj;
//自定义变量名console.log(myName, myAge, mySex);
//'ren' 12 'male'

5、对象方面

5.1 Map和Set

Map和Set属于es6新增加的对象

5.1.1 Map

Map对象用于保存键值对,任何值JavaScript支持的值都可以作为一个键(key)或者一个值(value)。
与对象不同的是

  • object的键只能是字符串或ES6的symbol值,而Map可以是任何值。

  • Map对象有一个size属性,存储了键值对的个数,而object对象没有类似属性。

let myMap = new Map([['name','ren'],['age',12]]);console.log(myMap);  
//{'name'=>'ren','age'=>12}myMap.set('sex','male');console.log(myMap);  
//{'name'=>'ren','age'=>12,'sex'=>'male'}console.log(myMap.size);  
//3myMap.get('name');  //'ren'myMap.has('age');
//truemyMap.delete('age');  
//truemyMap.has('age');  
//falsemyMap.get('age');  
//undefined
5.1.2 Set

可以理解为后端的Set集合对象
Set对象和Map对象类似,但它存储不是键值对。类似数组,但它的每个元素都是唯一的

let mySet = new Set([1,2,3]);
//里面要传一个数组,否则会报错console.log(mySet);  
//{1,2,3}mySet.add(4);console.log(mySet);  
//{1,2,3,4}mySet.delete(1);  
//truemySet.has(1);  
//falseconsole.log(mySet);  
//{2,3,4}

利用Set对象唯一性的特点,可以轻松实现数组的去重

let arr = [1,1,2,3,4,4];let mySet = new Set(arr);
let newArr = Array.from(mySet);console.log(newArr);  
//[1,2,3,4]

5.3 数组的新方法

  • 新增的方法有:

  1. Array.from()是内置对象Array的方法,实例数组不能调用

  2. includes() 参数:数值 -------- 返回值:true/false

  3. map()filter() 参数:函数-------- 返回值:数组

  4. forEach() 参数:函数-------- 返回值:undefined

  5. find() 参数:函数-------- 返回值:数值

  6. some()every() 参数:函数-------- 返回值:true/false

5.3.1 Array.from()方法

Array.from()方法可以将可迭代对象转换为新的数组。

  • 函数可接受3个参数(后两个参数可以没有):

    • 第一个表示将被转换的可迭代对象(如果只有一个参数就是把形参转变成数组)

    • 第二个是回调函数,将对每个数组元素应用该回调函数,然后返回新的值到新数组,

    • 第三个是回调函数内this的指向。

let arr = [1, 2, 3];let obj = {
   double(n) {
       return n * 2;
   }}console.log(Array.from(arr, function (n){
   return this.double(n);}, obj)); // [2, 4, 6]
5.3.2 includes()方法

参数:数值 -------- 返回值:true/false
includes()方法------是查看数组中是否存在这个元素,存在就返回true,不存在就返回false

let arr = [1,33,44,22,6,9]let ary = arr.includes(22)console.log(ary)
5.3.3 map()、filter() 方法

参数:函数-------- 返回值:数组
map()方法-----要利用原数组经过运算后的数组,或者从对象数组中拿某个属性
filter()方法------是将符合挑选的筛选出来成为一个新数组,新数组不会影响旧数组。

<script>
let arr = [1, 33, 44, 2, 6, 9];

let newarr1 = arr.filter((v) => v > 10); //newarr1-------[33, 44]
let newarr2 = arr.filter((v) => v * 2);  //newarr2-------[1, 33, 44, 2, 6, 9]

let newarr3 = arr.map((v) => v > 10);    //newarr3-------[false, true, true, false, false, false]
let newarr4 = arr.map((v) => v * 2);     //newarr4-------  [2, 66, 88, 4, 12, 18]</script>
5.3.4 forEach()方法

参数:函数-------- 返回值:undefined

forEach() 方法------是循环遍历数组中的每一项,没有返回值

find()方法---------是查找数组中符合条件的第一个元素,直接将这个元素返回出来

let arr = [1,33,44,2,6,9]let a1= []arr.forEach((v, i)=>{
 if (v > 10) {
   a1.push(arr[i])
 }  })console.log(a1) [33,44]let a2= arr.find(v => v > 10)console.log(a2)
5.3.4 find()方法

参数:函数-------- 返回值:数值

find()方法----------是查找数组中符合条件的第一个元素,直接将这个元素返回出来

let arr = [1,33,44,2,6,9]let a= arr.find(v => v > 10)console.log(a) // 33
5.3.6 some()、every() 方法

参数:函数-------- 返回值:true/false

some()方法------找到一个符合条件的就返回true,所有都不符合返回false
every()方法------数组所有值都符合条件才会返回true,有一个不符合返回false

let arr = [1,2,3,4,6,11]let newarr = arr.some(function(v){
 return v > 10})console.log(newarr)
 //truelet newarr2 = arr.every(function(v){
 return v > 10})console.log(newarr2)
 //false

5.4 object的新方法

在 ES6 中,添加了Object.is()Object.assign()Object.keys()Object.values()Object.entries()等方法。

5.4.1 Object.is()
  • Object.is()方法用来判断两个值是否为同一个值,返回一个布尔类型的值。

const obj1 = {};const obj2 = {};console.log(Object.is(obj1, obj2)); // falseconst obj3 = {};const value1 = obj3;const value2 = obj4;console.log(Object.is(value1, value2)); // true
5.4.2 Object.assign()
  • Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象,并返回目标对象。------难理解看实例
    对象合并

const obj1 = { a: 1 };const obj2 = { b: 2 };const obj3 = { a:5 , c: 3 };//对象合并,把后面对像合并到第一个对象,对象里相同的属性会覆盖Object.assign(obj1, obj2, obj3);console.log(obj1); // { a: 5, b: 2 , c:3}
5.4.3 Object.keys()、Object.values()、Object.entries()
  • Object.keys() 返回对象所有属性

  • Object.values() 返回对象所有属性值

  • Object.entries() 返回多个数组,每个数组是 key–value
    不解释直接看例子

<script>
let person = {
name: "admin",
age: 12,
language: ["java", "js", "css"],
};
console.log(Object.keys(person)); //[ 'name', 'age', 'language' ]

console.log(Object.values(person)); //[ 'admin', 12, [ 'java', 'js', 'css' ] ]

console.log(Object.entries(person));    </script>

5.5 对象声明简写

<script>

     let name ='admin'
     let age = 20
     //es6之前
     // let person={
     //     name:name,
     //     age:age
     // }

     //es6  声明对象时的属性名与引用的变量名相同就可以省略
     let person={
         name,
         age      }</script>

5.6 …(对象扩展符)

  1. 拷贝

<script>
let person={
name: "admin",
age: 12,
wife:"迪丽热巴"
}

let person2={...person}

console.log(person2===person);//false
console.log(person2);
//{name: 'admin', age: 12, wife: "迪丽热巴"}
</script>
  1. 合并对象

<script>
const obj1 = { a: 1 };
const obj2 = { b: 2 };
const obj3 = { a: 5, c: 3 };

   let newObj ={...obj1,...obj2,...obj3}
console.log(newObj);
// { a: 5, b: 2 , c:3}
</script>

6、函数方面

6.1 参数默认值

<script>

// es6之前
// function add(a, b) {
//     if(!a) a=0
//     if(!b) b=0
// return a + b;
// }

//es6
function add(a = 0, b = 0) {
return a + b;
}
let x=add();
let y=add(2);
let z=add(3, 4);
         console.log(x,y,z); //x=0, y=2, z=7</script>

6.2 箭头函数

箭头函数实现了一种更加简洁的书写方式。箭头函数内部没有arguments,也没有prototype属性,所以不能用new关键字调用箭头函数。

let add = (a,b) => {
   return a+b;}let print = () => {
   console.log('hi');}let fn = a => a * a;
   //当只有一个参数时,括号可以省略,函数体只有单行return语句时,大括号也可以省略。

6.3 箭头函数和普通函数最大的区别在于其内部this永远指向其父级对象的this。(重点)

 var age = 123;
let obj = {
    age:456,
    say:() => {
        console.log(this.age);  //this指向window
    }
};obj.say();   //123

7、class(类)

class 作为对象的模板被引入ES6,你可以通过 class 关键字定义类。class 的本质依然是一个函数。

  1. 创建类

<script>
class person {
//关键字声明方式
constructor(name) {
                 this.name=name              }          
say() {
console.log("hello");
}
}

var p = new person('p');
p.say(); //'hello'
console.log(p.name);</script>
  1. 类的继承
    类的继承通过extends关键字实现。
    子类必须在constructor中调用super()

<script>
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
say() {
console.log(this.name + ":" + this.age);
}
}
class Student extends Person {
constructor(name, age, sex) {
super(name, age);
this.sex = sex;
}
}
var student = new Student("admin", 12, "male");
student.name;   //'admin'
student.sex;    //'male'
student.say(); //'ren:12'</script>

8、promise和proxy

9、模块化

  1. 导入

ES6使用关键字 import 导入模块(文件),有两种常用的方式:

import ‘模块名称’  from  ‘路径’;import  ‘路径’;
  1. 导出

ES6 通过 export 和export default 导出模块。

let name = 'ren',age = 12;export {name,age};
//注意:变量需要用大括号包裹,然后才能向外输出

模块化优点

  1.防止命名冲突
  2.复用性强

10、运算符

...扩展运算符
可选链 ?.
函数绑定运算符::

以上就是关于“es6新特性怎么使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

es6新特性怎么使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

es6新特性怎么使用

这篇“es6新特性怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“es6新特性怎么使用”文章吧。es6新特性有:1、l
2023-07-04

es6的新特性有哪些及怎么使用

这篇文章主要介绍“es6的新特性有哪些及怎么使用”,在日常操作中,相信很多人在es6的新特性有哪些及怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”es6的新特性有哪些及怎么使用”的疑惑有所帮助!接下来
2023-06-26

es6新特性是什么

小编给大家分享一下es6新特性是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!es6新特性:1、ES6 引入了class,让JavaScript的面向对象编程
2023-06-06

vue中怎么使用es6特性

本篇内容主要讲解“vue中怎么使用es6特性”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue中怎么使用es6特性”吧!特性:1、let和const关键字,用于声明变量;2、“for…of”循
2023-07-05

JavaScript ES6的新特性

今天就跟大家聊聊有关JavaScript ES6的新特性,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一
2023-05-31

es6的新特性是什么

这篇文章将为大家详细讲解有关es6的新特性是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。es6新特性:const与let变量、模板字面量、解构、增强的对象字面量、for...of循环、展开运算符(.
2023-06-06

Java8新特性怎么使用

本篇内容介绍了“Java8新特性怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Java语言新特性Lambda表达式Lambda表达式
2023-06-02

Vue3.0新特性怎么使用

本篇内容主要讲解“Vue3.0新特性怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue3.0新特性怎么使用”吧!1、Vue3带来的新变化性能提升(零成本:从vue2切到vue3就享受到
2023-06-29

es6新特性都有哪些

es6新特性有:1、let和const;2、symbol;3、模板字符串;4、解构表达式;5、对象方面,如Map和Set;6、函数方面,如参数默认值和箭头函数;7、class关键字;8、promise和proxy;9、模块化;10、运算符。
2023-05-14

class是es6的新特性吗

这篇文章主要讲解了“class是es6的新特性吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“class是es6的新特性吗”吧!class是es6新特性。在ES6中,class(类)作为对象
2023-07-04

es6的新特性有哪些

es6的新特性有:1、块级作用域,可以在块级作用域中声明变量;2、箭头函数,一种新的函数声明方式;3、解构赋值,一种从数组或对象中提取值并赋值给变量的语;4、默认参数,允许在函数定义时为参数提供默认值;5、扩展运算符,可以将数组或对象展开,
2023-08-04

怎么使用的新Java特性

这篇文章主要讲解了“怎么使用的新Java特性”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用的新Java特性”吧!1 Try-with-resource 语句使用 try-catch
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录