iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >es6新特性是什么
  • 790
分享到

es6新特性是什么

2023-06-06 11:06:14 790人浏览 泡泡鱼
摘要

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

小编给大家分享一下es6新特性是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

es6新特性:1、ES6 引入了class,让javascript面向对象编程变得更加简单和易于理解;2、模块化Module;3、箭头Arrow函数;4、函数参数默认值;5、模板字符串

es6新特性:

1、类(class)

对熟悉Java,object-c,C#等纯面向对象语言的开发者来说,都会对class有一种特殊的情怀。ES6 引入了class(类),让JavaScript的面向对象编程变得更加简单和易于理解。

  class Animal {    // 构造函数,实例化的时候将会被调用,如果不指定,那么会有一个不带参数的默认构造函数.    constructor(name,color) {      this.name = name;      this.color = color;    }    // toString 是原型对象上的属性    toString() {      console.log('name:' + this.name + ',color:' + this.color);    }  } var animal = new Animal('dog','white');//实例化Animal animal.toString(); console.log(animal.hasOwnProperty('name')); //true console.log(animal.hasOwnProperty('toString')); // false console.log(animal.__proto__.hasOwnProperty('toString')); // true class Cat extends Animal {  constructor(action) {    // 子类必须要在constructor中指定super 函数,否则在新建实例的时候会报错.    // 如果没有置顶consructor,默认带super函数的constructor将会被添加、    super('cat','white');    this.action = action;  }  toString() {    console.log(super.toString());  } } var cat = new Cat('catch') cat.toString(); // 实例cat 是 Cat 和 Animal 的实例,和Es5完全一致。 console.log(cat instanceof Cat); // true console.log(cat instanceof Animal); // true

2、模块化(Module)

ES5不支持原生的模块化,在ES6中模块作为重要的组成部分被添加进来。模块的功能主要由 export 和 import 组成。每一个模块都有自己单独的作用域,模块之间的相互调用关系是通过 export 来规定模块对外暴露的接口,通过import来引用其它模块提供的接口。同时还为模块创造了命名空间,防止函数的命名冲突。

导出(export)

ES6允许在一个模块中使用export来导出多个变量或函数。

导出变量

//test.jsexport var name = 'Rainbow'

ES6将一个文件视为一个模块,上面的模块通过 export 向外输出了一个变量。一个模块也可以同时往外面输出多个变量。

 //test.js var name = 'Rainbow'; var age = '24'; export {name, age};

导出函数

// myModule.jsexport function myModule(someArg) {  return someArg;}

导入(import)

定义好模块的输出以后就可以在另外一个模块通过import引用。

import {myModule} from 'myModule';// main.jsimport {name,age} from 'test';// test.js

心得:一条import 语句可以同时导入默认函数和其它变量。import defaultMethod, { otherMethod } from 'xxx.js';

3、箭头(Arrow)函数

这是ES6中最令人激动的特性之一。=>不只是关键字function的简写,它还带来了其它好处。箭头函数与包围它的代码共享同一个this,能帮你很好的解决this的指向问题。有经验的JavaScript开发者都熟悉诸如var self = this;或var that = this这种引用外围this的模式。但借助=>,就不需要这种模式了。

箭头函数的结构

箭头函数的箭头=>之前是一个空括号、单个的参数名、或用括号括起的多个参数名,而箭头之后可以是一个表达式(作为函数的返回值),或者是用花括号括起的函数体(需要自行通过return来返回值,否则返回的是undefined)。

// 箭头函数的例子

()=>1v=>v+1(a,b)=>a+b()=>{    alert("foo");}e=>{    if (e == 0){        return 0;    }    return 1000/e;}

心得:不论是箭头函数还是bind,每次被执行都返回的是一个新的函数引用,因此如果你还需要函数的引用去做一些别的事情(譬如卸载监听器),那么你必须自己保存这个引用。

卸载监听器时的陷阱(React为例)

错误的做法

class PauseMenu extends React.Component{    componentWillMount(){        AppStateiOS.addEventListener('change', this.onAppPaused.bind(this));    }    componentWillUnmount(){        AppStateIOS.removeEventListener('change', this.onAppPaused.bind(this));    }    onAppPaused(event){    }}

+正确的做法

class PauseMenu extends React.Component{    constructor(props){        super(props);        this._onAppPaused = this.onAppPaused.bind(this);    }    componentWillMount(){        AppStateIOS.addEventListener('change', this._onAppPaused);    }    componentWillUnmount(){        AppStateIOS.removeEventListener('change', this._onAppPaused);    }    onAppPaused(event){    }}

除上述的做法外,我们还可以这样做:

class PauseMenu extends React.Component{    componentWillMount(){        AppStateIOS.addEventListener('change', this.onAppPaused);    }    componentWillUnmount(){        AppStateIOS.removeEventListener('change', this.onAppPaused);    }    onAppPaused = (event) => {        //把函数直接作为一个arrow function的属性来定义,初始化的时候就绑定好了this指针    }}

4、函数参数默认值

ES6支持在定义函数的时候为其设置默认值:

function foo(height = 50, color = 'red'){   // TODO}

这样写一般没问题,但当参数的布尔值为false时,就会有问题了。比如,我们这样调用foo函数:

foo(0, "")

因为0的布尔值为false,这样height的取值将是50。同理color的取值为‘red’。

所以说,函数参数默认值不仅能是代码变得更加简洁而且能规避一些问题。

5、模板字符串

ES6支持模板字符串,使得字符串的拼接更加的简洁、直观。

不使用模板字符串:

var name = 'Your name is ' + first + ' ' + last + '.'

使用模板字符串:

var name = `Your name is ${first} ${last}.`

在ES6中通过${}就可以完成字符串的拼接,只需要将变量放在大括号之中。

6、解构赋值

解构赋值语法是JavaScript的一种表达式,可以方便的从数组或者对象中快速提取值赋给定义的变量。

获取数组中的值

从数组中获取值并赋值到变量中,变量的顺序与数组中对象顺序对应。

var foo = ["one", "two", "three", "four"];var [one, two, three] = foo;console.log(one); // "one"console.log(two); // "two"console.log(three); // "three"//如果你要忽略某些值,你可以按照下面的写法获取你想要的值var [first, , , last] = foo;console.log(first); // "one"console.log(last); // "four"//你也可以这样写var a, b; //先声明变量[a, b] = [1, 2];console.log(a); // 1console.log(b); // 2

如果没有从数组中的获取到值,你可以为变量设置一个默认值。

var a, b;[a=5, b=7] = [1];console.log(a); // 1console.log(b); // 7

通过解构赋值可以方便的交换两个变量的值。

var a = 1;var b = 3;[a, b] = [b, a];console.log(a); // 3console.log(b); // 1获取对象中的值const student = {  name:'Ming',  age:'18',  city:'Shanghai'  };const {name,age,city} = student;console.log(name); // "Ming"console.log(age); // "18"console.log(city); // "Shanghai"

以上是“es6新特性是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: es6新特性是什么

本文链接: https://www.lsjlt.com/news/246731.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • es6新特性是什么
    小编给大家分享一下es6新特性是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!es6新特性:1、ES6 引入了class,让JavaScript的面向对象编程...
    99+
    2023-06-06
  • es6的新特性是什么
    这篇文章将为大家详细讲解有关es6的新特性是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。es6新特性:const与let变量、模板字面量、解构、增强的对象字面量、for...of循环、展开运算符(....
    99+
    2023-06-06
  • es6新加的特性是什么及怎么用
    这篇文章主要介绍“es6新加的特性是什么及怎么用”,在日常操作中,相信很多人在es6新加的特性是什么及怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”es6新加的特性是什...
    99+
    2024-04-02
  • Set是不是ES6的新特性
    本篇内容介绍了“Set是不是ES6的新特性”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • class是es6的新特性吗
    这篇文章主要讲解了“class是es6的新特性吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“class是es6的新特性吗”吧!class是es6新特性。在ES6中,class(类)作为对象...
    99+
    2023-07-04
  • var是不是es6新增的特性
    本篇内容主要讲解“var是不是es6新增的特性”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“var是不是es6新增的特性”吧! va...
    99+
    2024-04-02
  • JavaScript ES6的新特性
    今天就跟大家聊聊有关JavaScript ES6的新特性,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一...
    99+
    2023-05-31
    ecmascript javascript es6
  • ES6新特性之Object有什么变化
    这篇文章将为大家详细讲解有关ES6新特性之Object有什么变化,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Object的变化1. ES6允许在对象中只写属性名,不写属...
    99+
    2024-04-02
  • es6新特性怎么使用
    这篇“es6新特性怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“es6新特性怎么使用”文章吧。es6新特性有:1、l...
    99+
    2023-07-04
  • MySQL8.0新特性是什么
    本篇内容主要讲解“MySQL8.0新特性是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL8.0新特性是什么”吧!1. 默认字符集由latin1变为...
    99+
    2024-04-02
  • php7.4新特性是什么
    这篇文章主要介绍了php7.4新特性是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、...
    99+
    2023-06-14
  • Java13新特性是什么
    这篇文章主要介绍了Java13新特性是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 Java13新特性 Java 13 的官方开发...
    99+
    2024-04-02
  • ES6中let和const的特性是什么
    这篇文章主要介绍了ES6中let和const的特性是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。let的特性:1.不存在变量提升现象:...
    99+
    2024-04-02
  • es6的新特性有哪些
    es6的新特性有:1、块级作用域,可以在块级作用域中声明变量;2、箭头函数,一种新的函数声明方式;3、解构赋值,一种从数组或对象中提取值并赋值给变量的语;4、默认参数,允许在函数定义时为参数提供默认值;5、扩展运算符,可以将数组或对象展开,...
    99+
    2023-08-04
  • es6新特性都有哪些
    本教程操作环境:Windows10系统、ECMAScript 6版、Dell G3电脑。es6新特性都有哪些?ES6新特性1、let和const前面讲过:https://www.php.cn/js-tutorial-499866.html2...
    99+
    2023-05-14
    ES6
  • Java11的新特性是什么
    这篇文章主要讲解了“Java11的新特性是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java11的新特性是什么”吧!1. String API字符串绝对是 Java 中最常用的一个类...
    99+
    2023-06-02
  • Oracle 20c新特性是什么
    本篇内容主要讲解“Oracle 20c新特性是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle 20c新特性是什么”吧!在 Oracle Data...
    99+
    2024-04-02
  • Oracle 12C新特性是什么
    这篇文章主要讲解了“Oracle 12C新特性是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle 12C新特性是什么”吧!在12c里,推出了H...
    99+
    2024-04-02
  • MySQL 5.7 新特性是什么
    小编给大家分享一下MySQL 5.7 新特性是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!我们自豪的宣布 MySQL 5.7 稳定版开放下载了。 MySQL 5.7.9 是...
    99+
    2024-04-02
  • CSS3的新特性是什么
    本篇内容主要讲解“CSS3的新特性是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS3的新特性是什么”吧! 1.属性选择器(常用的简单归纳下) [a...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作