1.let & const

let:相当于var,不同的是没有变量提升,且只在声明的作用域内有效(新增了块级作用域)。

Const: 声明一个静态场量,一旦声明,常量的值就不能改变。

for..of..遍历

for(let item of arr){}, 需要注意的是如果遍历普通数组时需要返回index值,需要用entries()方法:

for( let [index,item]  of  arr.entries() ){...}

2.String 方法

CodePointAt():  识别字符串,返回十进制码点。

String.fromCharCode():  识别并返回16位的UTF-16字符

String.fromCharPoint():  识别并返回16/32位的UTF-16字符,与CodePointAt()相反

字符串遍历器接口:for..of..(能识别32位的字符,而传统for 循环不能)

Eg: for(let  codePoint  of  “foo”){

Console.Log(codePoint)

}

//”f”

//”o”

//”o”

at():  返回字符串给定位置的字符(能识别32位的字符,而传统charAt()不能)

normalize():  Unicode正规化, 将字符的不同表示方法统一为同样的形式

includes():  返回布尔值,表示是否找到了参数字符串。

startsWith():  返回布尔值,表示参数字符串是否在源字符串的头部。

endsWith():  返回布尔值,表示参数字符串是否在源字符串的尾部。

Repeat():  返回一个新字符串,表示将原字符串重复n次,参数为负时报错,为小数是自动取整,所以0~-0.9为0,NaN为0,

模板字符串:用反引号(`)标示  模板字符串中使用反引号需要用 \ 来转义

在字符串中嵌入变量: `hello ${name}`  // 变量表达式函数调用写在${}中,保留空格与缩进

模板编译:

3.面向对象

3.1      Class(类)类似于java 通过extends实现继承

Class  A{

Constructor(){     //构造函数,this指向实例本身

This.a = “dog”

}

Say(){…}

}

Class  B extends A{

Constructor(){     //构造函数,this指向实例本身

//super继承父类的this对象,子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象

super()

This.a = “cat”

}

}

ES6的继承机制,实质是先创造父类的实例对象this(所以必须先调用super方法),然后再用子类的构造函数修改this。

React中用的很多,创建的每个component都是一个继承React.Component的类

4.Arrow function

Class  A{

Constructor(){

This.a = “cat”

}

Say(){

//如果不用箭头函数,settimeout中的this本应该绑在全局变量

setTimeout( () => {

console.log(this.a)

}, 1000)

}

}

自带this,函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象,可以解决很多this指向带来的问题。

实际原因是箭头函数根本没有自己的this,它的this是继承外面的,因此内部的this就是外层代码块的this。

5.Destructuring(解构)

let cat = 'ken'

let dog = 'lili'

let zoo = {cat: cat, dog: dog} //ES5

let zoo = {cat, dog}  //ES6

反过来可以这么写:

let dog = {type: 'animal', many: 2}

let { type, many} = dog

console.log(type, many)

  1. Default  rest

function animal(type = 'cat'){

   console.log(type)

}

animal(); //cat

rest:

function animals(...types){

   console.log(types)

}

animals('cat', 'dog', 'fish') //["cat", "dog", "fish"]

交换变量的值: [x , y] = [y , x]

6.import export(es6 module功能)

传统的写法

首先我们回顾下require.js的写法。假设我们有两个js文件: index.js和content.js,现在我们想要在index.js中使用content.js返回的结果,我们要怎么做呢?

首先定义:

//content.js

define('content.js', function(){

   return 'A cat';

})

然后require:

//index.js

require(['./content.js'], function(animal){

   console.log(animal);   //A cat

})

那CommonJS是怎么写的呢?

//index.js

var animal = require('./content.js')

 

//content.js

module.exports = 'A cat'

ES6的写法

//index.js

import animal from './content'

 

//content.js

export default 'A cat'

export命令除了输出变量,还可以输出函数,甚至是类(有没有很眼熟 react的模块基本都是输出类)

ES6 小记的更多相关文章

  1. es6小记

    let, const, class, extends, super, arrow functions, template string, destructuring, default, rest ar ...

  2. Angular2 初学小记

    1.与Angular1的异同 几乎完全不同(什么鬼~ 1)保留一些特性 表达式仍旧用{{}}. 2)属性指令变为驼峰式 ng-if ---> ngIf 3)ng-repeat被ngFor代替 4 ...

  3. 随手小记(es6)

    在学习前辈阮一峰大神写的<ECMAScript入门>一书的过程中,第九章中讲到对象扩展时,第一条我就有点看不懂 ES6允许直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. v ...

  4. es6 学习小记 扩展运算符 三个点(...)

    参考: es6 扩展运算符 三个点(...) 经常回顾,方能真正掌握. 一.含义 扩展运算符( spread )是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. ...

  5. 前端小记6——项目中常用的ES6方法

    现在很多功能用es5的方法也能实现功能,但es6提供的方法显得更为高效.记录下目前常用的几个方法. 1.字符包含 通过str.includes('a')来判断, 若str中包含a则结果为true,否则 ...

  6. ES6——>let,箭头函数,this指向小记

    let let允许你声明一个作用域被限制在块级中的变量.语句或者表达式. 还是那个经典的问题:创建5个li,点击不同的li能够打印出当前li的序号. 如果在for循环中使用**var**来声明变量i的 ...

  7. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  8. webpack+react+redux+es6开发模式

    一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...

  9. ES6的一些常用特性

    由于公司的前端业务全部基于ES6开发,于是给自己开个小灶补补ES6的一些常用特性.原来打算花两天学习ES6的,结果花了3天才勉强过了一遍阮老师的ES6标准入门(水好深,ES6没学好ES7又来了...) ...

随机推荐

  1. 温故知新——C++--封装

      参考: 1.https://blog.csdn.net/cherrydreamsover/article/details/81942293 2.https://www.cnblogs.com/ji ...

  2. OneWire总线的Arduino库函数

    OneWire总线基本点 One-wire总线是DALLAS公司研制开发的一种协议,采用单根信号线,既传输时钟,又传输数据而且数据传输是双向的.它具有节省I/O 口线资源.结构简单.成本低廉.便于总线 ...

  3. lua 1.1 源码阅读总结

    GC 1. 怎么回收的lua 中所有已经分配的数据都会用一些指令的数据结构来记录,当需要回收时,先遍历当前栈内所有 object,把 ref 标志位打上 1,遍历符号表(这部分不能回收),反符号表中的 ...

  4. logback.xml demo

    如何关闭 org.apache.zookeeper.clientcnxn 的(控制台大量输出)debug 日志 1.在项目resources路径下新建 logback.xml 2.然后把下面的代码co ...

  5. 双栈排序(洛谷P1155)二分图的判定+思维贪心

    题目:戳这里 题目大意: 给你一个数列,问能否通过两个栈的push与pop把它输出成一个升序序列(每个数只能入队并出队一次) 不能的话输出0,能的话输出操作方法 主要思路: 1.判断是否可以成功输出升 ...

  6. spring boot:spring security整合jwt实现登录和权限验证(spring boot 2.3.3)

    一,为什么使用jwt? 1,什么是jwt? Json Web Token, 它是JSON风格的轻量级的授权和身份认证规范, 可以实现无状态.分布式的Web应用授权 2,jwt的官网: https:// ...

  7. requirements基本使用

    requirements作用描述:很多 Python 项目中经常会包含一个 requirements.txt 文件,里面内容是项目的依赖包及其对应版本号的信息列表,即项目依赖关系清单,其作用是用来重新 ...

  8. 完美解决pyinstaller 打包报错找不到依赖pypiwin32 或pywin32-ctypes的错误

    报错信息 最近闲来无事,用python的tkinter库开发了一款带日程提醒的万年历桌面程序.在程序开发结束开始打包时,却发现一直报错 PyInstaller cannot check for ass ...

  9. 【Azure Redis 缓存 Azure Cache For Redis】在创建高级层Redis(P1)集成虚拟网络(VNET)后,如何测试VNET中资源如何成功访问及配置白名单的效果

    当使用Azure Redis高级版时候,为了能更好的保护Redis的安全,启用了虚拟网路,把Redis集成在Azure中的虚拟网络,只能通过虚拟网络VENT中的资源进行访问,而公网是不可以访问的.但是 ...

  10. sql左连接查询+右表带有条件的实现

    select * from A表 a left join B表 b on a.id=b.a_id and b.字段='/*条件*/' ; 可查出左表所有数据 select * from A表 a le ...