虾写前端前端前端开发那些事

迟来的ES6,且只说精髓

2016-08-05  本文已影响583人  github加星点进来
ES6_Image.png
不废话,程序员时间宝贵,精髓拿去不谢

说实话,ES6(ECMAScript2015)刚出现是有点抵触的。由于笔者对swift有了解,发现ES6 新特效和swift很像 。它包含了一些很棒的新特性,可以更加方便的实现很多复杂的操作,提高开发人员的效率。

当然你写ES6,由于浏览器的限制,需要使用babel 或其他的编译器转换成ES5

<br />

1.Default Parameters(默认参数) in ES6 (和swift 里面一样的)
var cat = function (age, color, type) {
  var age = age || 2;
  var color = color || 'red';
  var type = type || 'bosimao';
  console.log(age,color,type)
  //2 "red" "bosimao"
}

var _cat = function(age=2,color='_red',type='_bosimao'){
    console.log(age,color,type)
    //2 "_red" "_bosimao"
}
cat()
_cat()
2.Template Literals(模板对象) in ES6(swift 字符串插值)
//字符串插值 , 用于字符串相连

var a = '代表A';
var b = '代表B';

var _all = '我既' + a + '也' + b;
var all = `我既${a}也${b}`

console.log(_all,all)
//我既代表A也代表B 我既代表A也代表B
3.Destructuring Assignment (解构赋值)in ES6
let oA = {a: 1 , b:()=>{return 3},c : 12};

var { a , b } = oA
 //a 为1 , b为函数
4.箭头函数
//箭头函数,综合了插值和默认值

var aFn = (a,b=8)=>{
  return `function , arguments ${a},${b}`
}
5. Classes (类)in ES6

class 记住 类首字母大写的规范 个人很喜欢这个OOP编程风格

class Abc {
  constructor(language, length) {
    this.name = 'ABC';
    this.language = language
    this.length = length
  }

  getLanguage(){
    return `${this.language}`
  }
  nameString(){
    return 'abc'
  }
}

var ac = new Abc('english',26);

class DEF extends Abc {
  //对于父类需要初始值的,继续的子类直接不报错,是undefined , 这个在swift 会报错,很赞的功能
  //可以继承且重写 ,只不过swift 函数重写需要写 override 在函数前面
  getLanguage(){
    return 'DEF'
  }


}
var df = new DEF()
//english ABC
console.log( ac.getLanguage() , ac.name)
//DEF ABC undefined
console.log(df.getLanguage() , df.name,df.language)
6.Module 模块化 export,import 命令

//方式1.

export var name = 'name'

//方式2.

const  name = 'name'
export name

//方式3.

// people.js
let  name = (name) => {
  return `name is : ${name}`
}
const age = "27"
export {name,age}

使用的时候是
import {name, age} from './people.js'

整体输入,module指令

//people.js

export function getName(name) {
return `${name} alisa is liujunbin`
}
export function getAge(){
return '27';
} 

import * as p from './people.js'

p.getName('baron')

export default

不用关系模块输出了什么,通过 export default 指令就能加载到默认模块
不需要通过 花括号来指定输出的模块,一个模块只能使用 export default 一次

//people.js
 function getAge() {}
 export default getAge;

// 导入的时候不需要花括号

 import test from './people.js';

一条import 语句可以同时导入默认方法和其它变量.

import default, { other } from 'xxx.js';
7.Promise

详情移步至
简书地址 ES6 的 Promise实践
http://www.jianshu.com/p/c0b6381f6251

github 地址
https://github.com/976500133/Web-Library/blob/master/10.es6-promise%E4%BB%8B%E7%BB%8D.html

文章稿纸的地址详见github

https://github.com/976500133/Web-Library

其他的一些特性暂时不说了,使用的不多

上一篇 下一篇

猜你喜欢

热点阅读