当前位置: 首页 > 编程日记 > 正文

ES6 新特性

ES6

先阅读这个
http://gejiawen.github.io/2015/07/28/Javascript/ECMAScript6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E7%B3%BB%E5%88%97/ECMAScript6%E6%96%B0%E7%89%B9%E6%80%A7%E7%AE%80%E4%BB%8B/

ES6的特性在chrome中默认是关闭的
Visit chrome://flags/#enable-javascript-harmony, enable this flag, restart Chrome

注意
请在 Chrome Canary 中使用新特性
至少我这里Chrome 44 在选择打开后仍然无效

=> 箭头函数

var arr = [1, 2, 3];// 传统写法
arr.forEach(function (v) {console.log(v);
});// 使用箭头操作符
arr.forEach( v => console.log(v));

更多例子

// ES5
var total = values.reduce(function (a, b) {return a + b;
}, 0);// ES6
var total = values.reduce((a, b) => a + b, 0);

如果回调函数语句不止一行呢

// ES5
$("#confetti-btn").click(function (event) {playTrumpet();fireConfettiCannon();
});// ES6
$("#confetti-btn").click(event => {playTrumpet();fireConfettiCannon();
});

for of

  • forEach有什么缺点呢
    不能使用 break 语句来跳出循环,也不能使用 return 语句来从闭包函数中返回。总之 没有办法中止 forEach 循环 如果要中止,可使用 Array.every 或 Array.some

  • 如果使用for in呢
for (var index in myArray) { console.log(myArray[index]);
}

更不推荐 因为会遍历到其他属性上去

  • for of 它支持 break、continue 和 return 语句。
for (var value of myArray) {console.log(value);
}

for-of 不仅仅是为数组设计,还可以用于类数组的对象,比如 DOM 对象的集合 NodeList

代码来自
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of
目前Chrome Canary 46 并不支持

let articleParagraphs = document.querySelectorAll("article > p");for (let paragraph of articleParagraphs) {paragraph.classList.add("read");
}

Class

代码来自
http://gejiawen.github.io/2015/07/28/Javascript/ECMAScript6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E7%B3%BB%E5%88%97/ECMAScript6%E6%96%B0%E7%89%B9%E6%80%A7%E7%AE%80%E4%BB%8B/

// 类的定义
class Animal {// ES6中的构造器,相当于构造函数constructor(name) {this.name = name;}// 实例方法sayName() {console.log('My Name is ' + this.name);}
}// 类的继承
class Programmer extends Animal {constructor(name) {// 直接调用父类构造器进行初始化super(name);}// 子类自己的实例方法program() {console.log('I\'am coding...');}// 静态方法static LEVEL() {console.log('LEVEL BAD!');}
}// 一些测试
var doggy=new Animal('doggy'),
larry=new Programmer('larry');
doggy.sayName(); // ‘My name is doggy’
larry.sayName(); // ‘My name is larry’
larry.program(); // ‘I'm coding...’
Programmer.LEVEL(); // ‘LEVEL BAD!’

解构赋值

摘自>http://gejiawen.github.io/2015/07/28/Javascript/ECMAScript6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E7%B3%BB%E5%88%97/ECMAScript6%E6%96%B0%E7%89%B9%E6%80%A7%E7%AE%80%E4%BB%8B/
利用这个特性,我们可以让一个函数返回一个数组,然后利用解构赋值得到数组中的每一个元素。


function getVal() {return [1, 2];
}var [x, y] = getValue();
var [name, age] = ['larry', 26];
// 交换两个变量的值
var [a, b] = [1, 2];
[a, b] = [b, a];
console.log('a: ' + a + ', b: ' + b);

新增集合 Map, Set, WeakMap, WeakSet

Set是单纯的集合 很像数组

var s = new Set();
s.add("hello").add("goodbye").add("hello");
s.size === 2;
s.has("hello") === true;

Map 很明显啦 key-value

var m = new Map();
m.set("hello", 42);
m.set(s, 34);  //这个s 是上面的set
m.get(s) == 34;

WeakSet

var ws = new WeakSet();
ws.add({ data: 42 });

WeakMap 简单的键/值映射.但键只能是对象值,不可以是原始值.

var wm1 = new WeakMap();
var o1 = {};
wm1.set(o1, 37);
wm1.get(o1); //37

和Map Set 区别
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap
references to objects in the collection are held weakly. If there is no other reference to an object stored in the WeakSet, they can be garbage collected. That also means that there is no list of current objects stored in the collection
The key in a WeakMap is held weakly. What this means is that, if there are no other strong references to the key, then the entire entry will be removed from the WeakMap by the garbage collector.

Array.from

这里的links 是真的数组哟 具备 forEach() 函数

var links = Array.from(document.querySelectorAll("aside > a"));
for (var l of links) {console.log(l.href);
}

转载于:https://www.cnblogs.com/cart55free99/p/4734982.html

相关文章:

一次被僵尸网络病毒攻击的过程

事件背景 回想起来应该算是去年的事情了, 时值 2019 年 1 月 24 日早上, 当时我正忙碌于开发手头的一个珠宝分销系统项目, 由于已经进行了多日封闭式开发, 项目初见效果, 准备放到内网服务器 A 上跑跑看. 项目的一些功能需要通过公网才能访问, 于是便打算通过一台之前就架设在公…

c2 链路_POS链路不能打开的解决办法

介绍的是POS链路不能打开的解决办法,其原因是C2字节不匹配,这里以华为路由器为组网环境。一、网络环境路由器A有GE接口和2.5G POS接口与其他路由器连接,启动路由器A后,发现GE端口的状态为正常开启,但2.5G POS端口无法开…

“寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面

如果第二次看到我的文章,欢迎下方扫码订阅我的个人公众号(跨界架构师)哟~本文长度为5723字,建议阅读15分钟。坚持原创,每一篇都是用心之作~这是一篇以程序员视角写的文章,但是内容是互联网行业通…

TCP拥塞控制算法内核实现剖析(二)

内核版本:2.6.37 主要源文件:linux-2.6.37/ net/ ipv4/ tcp_bic.c 本文主要分析BIC算法实现 1. 相关结构体和参数 /* BIC TCP Parameters */struct bictcp {u32 cnt ; /* increase cwnd by 1 after ACKs */u32 last_max_cwnd ; /* last maximum snd_cw…

关于IOS中的self关键字

在C#、Java中都有一个关键字this用于表示当前对象,其实在ObjC中也有一个类似的关键字self,只是self不仅可以表示当前对象还可以表示类本身,也就是说它既可以用在静态方法中又可以用在动态方法中。-(void)setName:(NSString *)name andAge:(in…

中值定理符号怎么读_微分、微分中值定理、泰勒公式

问对问题,找对方法,做对的事~ 黑莓 2020/10/09 温习001-031逻辑、集合、空间 线性代数00线性代数研究什么内容?-上海交大032-047行列式的定义、性质与计算10/03048-078矩阵的定义、运算10/03079-117可逆矩阵、初等变换与秩10/04…

Java高级特性增强-多线程

请戳GitHub原文: https://github.com/wangzhiwub... 大数据成神之路系列: 请戳GitHub原文: https://github.com/wangzhiwub... Java高级特性增强-集合 Java高级特性增强-多线程 Java高级特性增强-Synchronized Java高级特性增强-volatile Java高级特性增强-并发集合…

微软企业库4.1学习笔记(八)创建对象 续集2

3.3通过配置指定和Unity的整合 另外一种方法是在配置源中指定配置的需要,你可以指定下面的一条或者多条: 你可以在Unity配置中指定想要的BlockExtensions  你可以在Unity配置中的type配置节指定如何创建企业库对象,指定类型映射的关系&…

Kali Linux python 安装pip

安装pip:apt-get install python-setuptoolseasy_install pippip install xxxx转载于:https://www.cnblogs.com/arhatlohan/p/4737828.html

3dmax图像采样器抗锯齿_内幕揭秘!同样的场景同一张图,用3DMAX网渲平台进行二次渲染时间竟然相差3个小时之多!...

一个分辨率:4000*2000的室内客餐厅,3dmax版本是2014版本,渲染器版本为vray3.63,机器:阿里云1台服务器,这个同样的场景同样的参数同一张图,用3dmax网渲平台进行二次渲染发现时间相差了将近3个小时之多&#…

2015/8/18

一、git, switch to找不到师傅新创的branch 解决方法:切到git视图去pull,然后切回java视图,再Team->switch to,就能找到了 二、在师傅的环境中能successful,在我的环境中却是failed 解决方法:eclipse-&g…

Javascript - prototype、__proto__、constructor

最近看了很多文章,想要更通透的搞懂JS中的prototype、__proto__与constructor属性,从各个博主的文章里摘取了我认为可以有助于理解的一些内容,希望自己能够掌握好这一重要知识点的同时也帮助到大家,具体内容请见下文。 &#xff0…

DOS下读取4GB内存

好文章我收集下起来 CPU上电后,从ROM 中的BIOS开始运行。 BIOS是处在内存的最顶端64KB(FFFF0000H),还是1MB之下的64KB(F0000H)处呢?事实上,BIOS在这两个地方都同时出现。 在保护模式…

7纳米duv和euv_要超车台积电 三星宣布采用EUV技术7纳米制程完成验证

在晶圆代工市场,台积电与三星的竞争始终是大家关心的戏码。三星虽然有高通等VIP客户,但在7纳米制程节点,高通预计会转投台积电,三星要想受更多客户的青睐,只能从制程技术着手了。这也是三星跳过非EUV技术的7纳米制程&a…

HDU 1711 Number Sequence(KMP算法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid1711 Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 15548 Accepted Submission(s): 6836Problem DescriptionGiven two s…

分享45款高质量的免费(X)HTML/CSS模板

当你需要在短时间内设计出一个网站的时候,网站模板就非常有用了。这也就是为什么这些设计模板已成为设计领域的最新趋势的原因。在这篇文章中,收集了各式各样的网站模板,您可以免费下载使用,希望这些设计模板不仅带给您灵感&#…

运维开发笔记整理-前后端分离

运维开发笔记整理-前后端分离 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.为什么要进行前后端分离 1>.pc, app, pad多端适应 2>.SPA开发式的流行(单页Web应用(single page we…

初识mysql数据字段属性_MySQL数据库~~~~初识、基础数据类型

一 数据库初识1.1 什么是数据库数据库(DataBase,简称DB),简而言之可视为电子化的文件柜----存储电子文件的处所,用户可以对文件中的数据运行新增,截取,更新,删除等操作. 所谓数据库是以一定方式储存在一起,能予多个用户 共享,具有尽可能小的冗余度,与应用程序彼此独立的数据集合…

WinForm导出文件,你懂的……

好久没有写文章了,下面把自己最近程序中用到的一个小小的导出文件的方法给在家分享一下,欢迎大家来排砖,谢谢~不说废话了,直接上代码: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; …

PL/SQL第五章 Order by排序

1 -- 排序2 -- 1、列明排序3 -- 2、别名排序4 -- 3、列位置排序(当使用union,union all,intersect,minus集合操作,列明不同,但希望排序)5 SELECT deptno,dname FROM dept UNION6 SELECT empno,ename FROM emp7 ORDER BY 1 DESC;8 …

想转行学python过来人提醒大家几点

因为目前python非常火,应用也非常广泛,是目前最火的行业之一,竞争很大,工资很高,未来发展也极好。 首先告诉你,零基础学习python难度还是有的,python的专业程度本身就不简单,学习这事…

mysql答题表设计_PHP+MYSQL问答系统中的提问和回答的表怎么设计

展开全部PHPMYSQL 的问答系32313133353236313431303231363533e78988e69d8331333337396236统的设计与实现,问答系统简而言之 就是一个网上交流系统,针对学校这个特定环境,以学生和老师为主体,以实验室信息交流为话题而建立起的一个…

Android实时获取音量(单位:分贝)

基础知识 度量声音强度,大家最熟悉的单位就是分贝(decibel,缩写为dB)。这是一个无纲量的相对单位,计算公式如下: 分子是测量值的声压,分母是参考值的声压(20微帕,人类所能…

排序算法 - 堆排序

堆排序是指利用堆这种数据结构所设计的一种排序算法。 类型:选择排序时间复杂度(最坏):O(nlogn)时间复杂度(最好):O(nlogn)时间复杂度(平均):O(nlogn)空间复杂…

textContent与innerText的不同(转发)

textContent与innerText的不同 IE下有个innerText属性,FF下有个textContent属性。很多以前给IE写脚本的,在FF下找不到innerText属性,于是网上搜到的建议是用textContent来替代。反之给FF写脚本的也一样。 但是实际上,这里有个误解…

mysql插入性能_mysql 数据量大时插入和查询性能

现在mysql中有数据33.8w的数据,然后做查询和更新或插入操作,速度很慢,基本100条数据就要1.68s。好慢啊,我要测试一下,到底慢在哪?能不能提高点速度?参考一篇博文:http://blog.csdn.n…

Ext JS 4 笔记1

ExtJS4 引入了现在灰常流行的前端MVC。这在原本的3.3.1里面是没有的。原先项目里为了实现相对的MVC,自己写了一个controller和model ,收集并且保持JS端的数据。所以呢,这时候的文档结构就完全不一样了。原本的结构更像是传统 C# winform &…

activemq 消息阻塞优化和消息确认机制优化

一、消息阻塞优化 1.activemq消费者在从待消费队列中获取消息是会先进行预读取,默认是1000条(prefetch1000)。这样很容易造成消息积压。 2.可以通过设置prefetch的默认值来调整预读取条数,java代码如下 //设置预读取为1ActiveMQPr…

iOS-查询数据库--指定数据表中的当前数据行的总数量

很多时候,我们在查询一个表的时候,不想得到里面的记录内容,只是想简单的得到符合查询条件的记录条数。 FMDB中有一个很简单的方法就可以实现,见下面的代码实例: #import "FMdatabase.h" (int)numberOfCurre…

mysql 判断日期是否在某范围内_判断时间是否在某个区间内

private bool IsInTimeInterval(DateTime time, DateTime startTime, DateTime endTime) {//判断时间段开始时间是否小于时间段结束时间,如果不是就交换 if (startTime > endTime) {DateTime tempTime = startTime; startTime = endTime; endTime = tempTime; } //获取以公…