一、iterator和for-of循环

在js里有数组和对象,es6又新出现了set和map这样js就有了四种数据集合,这样可以组合使用他们,比如数组里拥有对象,set等,这样就需要一个统一的

接口机制来处理不同的数据结构,iterator就是这样的接口,它为不同的数据结构提供统一的访问机制,任何数据结构只要部署iterator接口就可以遍历操作

他们,并且iterator接口主要供for...of遍历

//iterator接口

const arr = [1,2];

function iterator(arr){
let index = 0;
return{
next:function(){
return index < arr.length ? {value:arr[index++],done:false}:
{value:undefined,done:true}
}
}
} const it = iterator(arr);
console.log(it.next());//{value:1,done:false}
console.log(it.next());//{value:2,done:false}
console.log(it.next());//{value:undefined,done:true}

二、class类的使用

es6添加了class,使ECMAScript语法更偏向于后台语言

class Cher{
constructor(a,b){
this.a = a;
this.b = b;
return this;
}
chun(){
console.log(this.a +'===='+ this.b);
}
} const cher = new Cher('111','222');
cher.chun(); //111====222

在这里面,constructor方法是构造方法,一个类里必须要有constructor,如果没有,它会默认添加一个空的constructor,this代表着实例对象,里面还有一个chun方法,前面是不需要加function关键字的,方法之间是不需要逗号隔开,否则会报错,创建实例对象的时候是和es5一样的,必须要加new,否则也是会报错的

三、内置对象的扩展

1、字符串的扩展

字符串添加了一个模板字符串(超级字符串),那就是反引号,并且换行的时候不在需要繁琐的加号连接,而且在字符串里有变量的时候也不需要加号连接,只需要使用

${}操作就可以了

//html代码
<p></p> //js代码
let str = 'o'; document.getElementsByTagName('p')[0].innerHTML = `hell${str},world!!!` //hello,world!!!

并且还添加了一些字符串的方法:

repeat:对字符串进行重复的操作

let str1 = '1';
let str2 = str1.repeat(5);
console.log(str2); //

includes()、startWith()、endWith()分别是查看是否含有某个字符串,字符串里的开始部分是否含有某个字符串,字符串的结尾部分是否含有某个字符串,他们返回的是一个布尔值

2、数组的扩展

Array.from():把类数组变成数组

类数组最常见的就是js选择一组元素标签

let aP = document.getElementsByTagName('p');
console.log(Array.isArray(aP)); //false
let ap = Array.from(aP);
console.log(Array.isArray(ap)); //true

Array.of():创造一个数组

const arr = Array.of(a);
console.log(arr) //[a]

fill():数组填充,第一个参数是填充的字符串,也可以有第二个参数是从什么位置开始填充(可以没有第二个参数)

const arr = ['a','b','c'];
arr.fill('abc');
console.log(arr) //['abc','abc','abc']

find()、findIndex() : 对数组进行赛选

const arr = [1,2,3,4,5];

let arr1 = arr.find(function(a){
return a > 3;
})
console.log(arr1); //4,5如果没有找到符合条件的值就返回-1
//findIndex()他返回的是下标,没有找到的话返回undefined

3、对象的扩展

对象的简洁表示法

如果对象的属性和值一样的话可以写成let obj = {a};函数的话可以写成handler(){...};

Object.assign():对象的合并。将一个对象里的所有可以枚举的属性,复制到另一个对象

let obj1 = {x:1};
let obj2 = {y:1};
Object.assign(obj1,obj2);
console.log(obj1); //{x:1,y:1}

Object.is()看俩个值是否一样,返回布尔值

console.log(Object.is(1,1));  //true
console.log(Object.is(Infinity,-Infinity)) //false
console.log(Object.is(NaN,NaN)); //true
console.log(Object.is(-0,+0)); //false

四、函数的扩展

1、函数的参数指定默认值

function handler(x,y = 1){  //y设置了一个默认值1
console.log(x + y);
}
handler(3); //

2、rest参数

rest参数的形式是"...变量名",获取函数多余的参数,这样就不需要arguments对象了,rest参数搭配的变量是一个数组,该变量将多余的参数放入数组里

function hander(...arr) { //可以在arr前面加参数,但是后面不可以加参数
var sum = 0;
for(var i=0;i<arr.length;i++){
sum += arr[i];
}
console.log(sum);
} hander(1,2,3) //

3、箭头函数

const hander2 = function (x) { //普通函数
return x;
} const hander1 = x => x; //箭头函数 console.log(hander1(1))
console.log(hander2(1))
//俩函数是一样的

箭头函数里没有自己的this对象,使用的时候,里面的this就是定义环境的对象,而不是使用时的对象

箭头函数里没有arguments对象,可以有rest

箭头函数不可以用作构造函数,不可以使用new操作,否则会报错

箭头函数不能用作Generator函数

ES6的小知识(后半部分)的更多相关文章

  1. 3星|《腾讯产业森林:AI时代的创业密码》:后半部分是较详细的创业指南,前面泛泛介绍腾讯、AI

    腾讯产业森林:AI时代的创业密码 前半部分泛泛介绍腾讯对创业者的支持,腾讯支持的创业项目的案例.AI的一些基本介绍,后半部分是比较详细的写给创业者的各阶段行动与选择的指南. 总体评价3星,有一些参考价 ...

  2. es6 一些小知识

    本人最近被es6感兴趣了,学习一些,以下就是自己总结的一些小知识 1.当你在百度输入"es6"关键字,点击进入es6入门,首先你需要知道怎样学习的顺序,先看第21章Module语法 ...

  3. ES6的小知识(前半部分)

    一.let与const的使用 let:用来声明一个变量,与var类似 1.用let声明的变量,所声明的变量只在命令所在的代码块内有效 function hander(){ let a = 10; co ...

  4. 后半部分样式和JS前半部分脚本语言

    样式 剩余样式: 1.<div style=display:"none"></div>:nono 是隐藏该元素内容,block是显示该元素内容 2.< ...

  5. C++PRIMER第二章前半部分答案

    C++PRIMER第二章前半部分答案 哈哈哈,为什么是前半部分呢,后半部分还在学习中,重新系统性的学习c++,共同进步嘛,不多说,跟我一起来看看吧,第三章开始才是新手收割的时候,慢慢来~~ 2.1&a ...

  6. Unicode和汉字编码小知识

    Unicode和汉字编码小知识 将汉字进行UNICODE编码,如:“王”编码后就成了“\王”,UNICODE字符以\u开始,后面有4个数字或者字母,所有字符都是16进制的数字,每两位表示的256以内的 ...

  7. 12个你未必知道的CSS小知识

    虽然CSS并不是一种很复杂的技术,但就算你是一个使用CSS多年的高手,仍然会有很多CSS用法/属性/属性值你从来没使用过,甚至从来没听说过. 1.CSS的color属性并非只能用于文本显示 对于CSS ...

  8. 【C#小知识】C#中一些易混淆概念总结(二)--------构造函数,this关键字,部分类,枚举 分类: C# 2014-02-03 01:24 1576人阅读 评论(0) 收藏

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 继上篇对一些C#概念问题进行细节的剖析以后,收获颇多.以前,读书的时候,一句话一掠而 ...

  9. Django 2.0.7 使用小知识

    Django 2.0.3 使用小知识 运行环境: Python 3.6.4 Django 2.0.7 Django Admin中model显示为中文 定义model时,定义一个Meta对象,设置需要显 ...

随机推荐

  1. 个人小爱好:Operating System: three easy pieces第6章第5节——总结

    总结 我们讨论了实现CPU虚拟化的部分底层机制,及我们统称为直接执行(direct execution)的一组技术.基本的思想十分简单明了:直接在CPU上运行你想运行的代码,但是你先得确保将硬件设置好 ...

  2. Windows 10 Creators Update [ISO官方镜像][15063][1703][x64][x86][创意者更新正式版]

    请把下载地址手动复制到迅雷里面去,谢谢! [64 位简体中文专业/家庭版] 文件名:cn_windows_10_multiple_editions_version_1703_updated_march ...

  3. ionic3.x版本开发问题记录---使用Image Resizer打包报错问题

    按照官方文档安装和使用,最后在打包的时候报错 /platforms/android/src/info/protonet/imageresizer/ImageResizer.java:12: error ...

  4. cestos7安装zookeeper

    zookeeper安装包下载地址http://archive.apache.org/dist/zookeeper/ 一.单机 在/usr目录下 curl -L-O http://archive.apa ...

  5. ADC裸机程序

    硬件平台:JZ2440 实现功能:通过采集触摸屏ADC的电压值,推算触摸xy坐标 start.s init.c nand.c interrupt.c uart.c uart.h my_stdio.c ...

  6. 详解FPGA中的建立时间与保持时间

    概念对于一个数字系统而言,建立时间和保持时间可以说是基础中的基础,这两个概念就像是数字电路的地基,整个系统的稳定性绝大部分都取决于是否满足建立时间和保持时间.但是对于绝大部分包括我在内的初学者来说,建 ...

  7. File 文件

    1 File 概述 文件:file目录:directory路径:path File类静态成员变量: pathSeparator:与系统有关的路径分隔符,为了方便,它被表示为一个字符串separator ...

  8. Mac同时安装python2和python3

    Mac同时安装python2和python3 Mac自带python2,但因为开发时所用但pythonkennel是3也可能是2,并且就算是python2,版本号也许和内置但python也有所不同.所 ...

  9. sql语句格式化数字(前面补0)

    将一个数字例如33,或1使用t-sql语句转换成033或001 以下是详细分析: .,)得到1000 . as varchar) 将1000转换类型 .,) 从右边取3个字符得到033 将1格式化同上 ...

  10. linux----------centos6.4安装完了以后敲ifconfig,没有局域网ip。解决如下

    1.vim /etc/sysconfig/network-scripts/ifcfg-eth0 进入linux然后进入这个文件里面如下: DEVICE=eth0 HWADDR=00:0C:29:92: ...