ES6 小记
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)
- 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 小记的更多相关文章
- es6小记
let, const, class, extends, super, arrow functions, template string, destructuring, default, rest ar ...
- Angular2 初学小记
1.与Angular1的异同 几乎完全不同(什么鬼~ 1)保留一些特性 表达式仍旧用{{}}. 2)属性指令变为驼峰式 ng-if ---> ngIf 3)ng-repeat被ngFor代替 4 ...
- 随手小记(es6)
在学习前辈阮一峰大神写的<ECMAScript入门>一书的过程中,第九章中讲到对象扩展时,第一条我就有点看不懂 ES6允许直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. v ...
- es6 学习小记 扩展运算符 三个点(...)
参考: es6 扩展运算符 三个点(...) 经常回顾,方能真正掌握. 一.含义 扩展运算符( spread )是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. ...
- 前端小记6——项目中常用的ES6方法
现在很多功能用es5的方法也能实现功能,但es6提供的方法显得更为高效.记录下目前常用的几个方法. 1.字符包含 通过str.includes('a')来判断, 若str中包含a则结果为true,否则 ...
- ES6——>let,箭头函数,this指向小记
let let允许你声明一个作用域被限制在块级中的变量.语句或者表达式. 还是那个经典的问题:创建5个li,点击不同的li能够打印出当前li的序号. 如果在for循环中使用**var**来声明变量i的 ...
- ES6模块import细节
写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...
- webpack+react+redux+es6开发模式
一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...
- ES6的一些常用特性
由于公司的前端业务全部基于ES6开发,于是给自己开个小灶补补ES6的一些常用特性.原来打算花两天学习ES6的,结果花了3天才勉强过了一遍阮老师的ES6标准入门(水好深,ES6没学好ES7又来了...) ...
随机推荐
- HTML & CSS & JavaScript 从一个表格到一个灰阶颜色表 03
工具1:HBuilder X 1.9.9.20190522 工具2:火狐浏览器 67.0.4 (64 位) 其实,我还想使用表格,做一个这样的颜色表,如下图所示: 如果按照之前的做法,把每一种颜色都列 ...
- 【题解】[USACO13FEB]Tractor S
题目戳我 \(\text{Solution:}\) 好久没写啥\(dfs\)了,借这个题整理下细节. 观察到答案具有二分性,所以先求出其差的最大最小值,\(\log val\)的复杂度不成问题. 考虑 ...
- Lane-Detection 近期车道线检测论文阅读总结
近期阅读的几篇关于车道线检测的论文总结. 1. 车道线检测任务需求分析 1.1 问题分析 针对车道线检测任务,需要明确的问题包括: (1)如何对车道线建模,即用什么方式来表示车道线. 从应用的角度来说 ...
- Python 中 pip 工具的安装与使用
pip 是 Python 包管理工具,该工具提供了对Python 包的查找.下载.安装.卸载的功能. 目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具. Python 2 ...
- Windows 系统蓝屏错误小全
0 0x00000000 作业完成. 1 0x00000001 不正确的函数. 2 0x00000002 系统找不到指定的档案. 3 0x00000003 系统找不到指定的路径. 4 0x000000 ...
- Spring IOC 容器预启动流程源码探析
Spring IOC 容器预启动流程源码探析 在应用程序中,一般是通过创建ClassPathXmlApplicationContext或AnnotationConfigApplicationConte ...
- go-zero 如何应对海量定时/延迟任务?
一个系统中存在着大量的调度任务,同时调度任务存在时间的滞后性,而大量的调度任务如果每一个都使用自己的调度器来管理任务的生命周期的话,浪费cpu的资源而且很低效. 本文来介绍 go-zero 中 延迟操 ...
- empty()和size() == 0有区别吗
empty()和size() 这里说的empty()和size()都是STL的容器中提供的接口,分别用来判断当前容器是否为空和获取当前包含的元素个数 区别 其实按道理来说两者应该是相等的,而且STL容 ...
- 【树形DP】ZJOI2008 骑士
题目内容 洛谷链接 有\(n\)位骑士,每个人的战力可能不同,并且每一个人都有且仅有一个憎恨的人,互相憎恨的人不能在同一队中. 求组合为一个骑士队的最大战斗力. PS:可以去看看题目背景学学历史(雾) ...
- spring boot:方法中使用try...catch导致@Transactional事务无效的解决(spring boot 2.3.4)
一,方法中使用try...catch导致@Transactional事务无效的解决方法 1,问题的描述: 如果一个方法添加了@Transactional注解声明事务, 而方法内又使用了try catc ...