看了一篇ES6语法示例,觉得还可以

here

ES6是新一版的标准,对语言有扩展,添加了新的属性与方法。这一标准虽然现在还要用babel来做浏览器支持(将ES6编译成ES5才能被浏览器支持),但是未来浏览器会逐渐对其有原生的支持。到时候JS语法会发生更新,我们可以使用更简单的方式编写代码,使得编程更容易。

语法糖:糖衣语法,并不改变语言的功能,只是使编程更简单。比如C语言里用a[i]表示*(a+i)

ES6就是用了较多语法糖,这也就意味着,ES6的一些新特性并不是真的“新”,只是试图简化语法而已。

下面是ES6的一些新特性/优点:

1、类的封装

  1. class Project {
  2. constructor(name) { //构造方法
  3. this.name = name;
  4. }
  5.  
  6. start() { //成员方法,可以不用function声明
  7. return "Project " + this.name + " starting";
  8. }
  9. }
  10.  
  11. var project = new Project("Journal");
  12. project.start(); // "Project Journal starting"

这个类中定义的所有方法都被加入这个类的原型prototype中

2、继承

现有的JS语法中,继承是通过prototype实现的

ES6中:

  1. class WebProject extends Project {
  2. constructor(name, technologies) {
  3. super(name);
  4. this.technologies = technologies;
  5. }
  6.  
  7. info() {
  8. return this.name + " uses " + arrayToString(this.technology);
  9. }
  10. }
  11.  
  12. function arrayToString(param) {
  13. // ... some implementation
  14. }
  15.  
  16. var webJournal = new WebProject("FrontEnd Journal", "javascript");
  17. webJournal.start(); // "FrontEnd Journal starting"
  18. webJournal.info(); // "FrontEnd Journal uses javascript"

3、模块化module

在js中,为了实现模块化编程,可以使用插件工具seajs等,seajs符合CMD规范,CMD规范是在commonJS(服务端模块化规范)基础上的

ES6中:

  1. // point.js
  2. module "point" {
  3. export class Point {
  4. constructor (x, y) {
  5. public x = x;
  6. public y = y;
  7. }
  8. }
  9. }
  10.  
  11. // myapp.js
  12. //声明引用的模块
  13. module point from "/point.js";
  14. //这里可以看出,尽管声明了引用的模块,还是可以通过指定需要的部分进行导入
  15. import Point from "point";
  16.  
  17. var origin = new Point(0, 0);
  18. console.log(origin);

4、let和const

  1. for (let i=0;i<2;i++)console.log(i);//输出: 0,1
  2. console.log(i);//输出:undefined,严格模式下会报错

用let声明的变量只在代码块中可见

var是 函数作用域,而let是 块级作用域

const是创建常量,一旦被创建,值就不可改变

还有一些其他特性

一篇很好的ES6介绍

很多人说ES6很好用,都会觉得“早这样该多好”

它的缺点就是 浏览器还没有完全支持

ES6优缺点的更多相关文章

  1. ES6 --- JS异步编程的几种解决方法及其优缺点

    导言: 我们都知道 JS 是单线程的,这也正是异步编程对于 JS  很重要的原因,因为它无法忍受耗时太长的操作.正因如此有一系列的实现异步的方法. 方法一  setTimeout 常用于:定时器,动画 ...

  2. babel-runtime和babel-polyfill两者区别优缺点

    先说两种方式的原理: babel-polyfill 使用场景 Babel 默认只转换新的 JavaScript 语法,而不转换新的 API.例如,Iterator.Generator.Set.Maps ...

  3. es6学习笔记--Interator和Generator(以及for-of的用法)

    这几天学习了遍历器和生成器,看着资料学,有点雾里缭绕的感觉,让人忍不住放弃,还好多看了好几遍,怼着资料里的例子让自己学会了Interator和Generator.   Interator,中文简称:遍 ...

  4. ES6 系列之 Babel 是如何编译 Class 的(下)

    前言 ES5 寄生组合式继承 function Parent (name) { this.name = name; } Parent.prototype.getName = function () { ...

  5. 前端面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)

    写在前面 参考答案及资源在看云平台发布,如果大家想领取资源以及查看答案,可直接前去购买.一次购买永久可看,文档长期更新!有什么意见与建议欢迎您及时联系作者或留言回复! 文档描述 本文是关注微信小程序的 ...

  6. 判断js数据类型的四种方法,以及各自的优缺点(转)

    转载地址:https://blog.csdn.net/lhjuejiang/article/details/79623973 数据类型分为基本类型和引用类型: 基本类型:String.Number.B ...

  7. 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理

    [微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...

  8. js继承的几种方法和es6继承方法

        一.原型链继     1.基本思想     利用原型链来实现继承,超类的一个实例作为子类的原型     2.具体实现     function F() {}     //原型属性,原型方法: ...

  9. javascript中各种继承方式的优缺点

    javascript中实现继承的方式有很多种,一般都是通过原型链和构造函数来实现.下面对各种实现方式进行分析,总结各自的优缺点. 一 原型继承 let Super = functioin(name = ...

随机推荐

  1. ES 6 系列 - Proxy

    Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以是一种“元编程”,即对编程语言进行编程. 简单地理解,就是在目标对象之前假设一层“拦截”,外界对改对象的访问,都必须先通过这层拦截 ...

  2. Essential Phone刷机教程

    安装fastboot驱动(Essential-PH1-WindowsDrivers) 下载ADB刷机指令工具:platform-tools(ADB): 进入开发者选项,打开 USB 调试,OEM解锁选 ...

  3. Deconvolution用法

  4. 设置和安装 BizTalk Server 2016 的必备组件

    设置服务器,然后安装和配置软件必备组件. 加入本地管理员组       若要安装并配置 BizTalk Server,在本地计算机上使用管理员帐户登录到服务器. 向本地管理员组添加任何管理 BizTa ...

  5. luoguP4035

    P4035 [JSOI2008]球形空间产生器 Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以 ...

  6. 洛谷 P1126 机器人搬重物

    题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运物品.机器人的形状是一个直径 $1.6 米的球.在试验阶段,机器人被用于在一个储藏室中搬运货物.储藏室是一个 N×MN \times MN×M ...

  7. Scrapy突破反爬虫的限制

    随机切换UserAgent https://github.com/hellysmile/fake-useragent scrapy使用fake-useragent 在全局配置文件中禁用掉默认的UA,将 ...

  8. ALGO-19 审美课

      算法训练 审美课   时间限制:1.0s   内存限制:256.0MB      问题描述 <审美的历程>课上有n位学生,帅老师展示了m幅画,其中有些是梵高的作品,另外的都出自五岁小朋 ...

  9. Quartus prime 16.0 in_system memory content editor 使用

    前言 quartus提供了片内存储器的实时查看与修改,而不用编译工程,很棒.你可以方便的查看到存储器中到底存储了什么东西. 流程 1.打开: 2.主界面: 3.设置jtag项之后,查看即可. sign ...

  10. 【XSY2032】简单粗暴的题目 组合数

    题目描述 给你\(n,k,a_1\ldots a_n\),设 \[ ans_n=\sum_{i=1}^n{(\sum_{j=i}^ns(j))}^k\\ \] 求\(ans_1\ldots ans_n ...