【ES6】---JavaScript(二)
一、数组中新增的方法
1、Array.of()
// Array.of():函数作用:将一组值,转换成数组 var arr = Array.of(1,2,3,4); console.log(arr);// [1,2,3,4]
2、Array from函数
// Array.from:将伪数组转换为数组 var aLi = Array.from(document.getElementsTagName("li")); console.log(aLi instanceof Array);
3、Array.find()
// 作用:通过条件查找数据,如果条件符合返回第一个符合条件的数据 var arr = [1,2,3,4]; var n = arr.find(function(item,index,array){ return item>3; }) console.log(n) // 4
4、Array.findIndex()
// 查找数组中符合条件的数据的下标, // 查找到返回相对应下标,没有查找到返回undefine var arr = [1,2,3,4]; var n = arr.findIndex(function(item,index,array){ return item>3; }) console.log(n) // 3
5、Array.fill()
// 对数组进行填充 // 语法:arr.fill("填充的值",开始下标,结束下标) var arr = [10,20,30,40]; arr.fill("Alley",1,3); // [10, "Alley", "Alley", 40]
二、for of && iterator
1、for of
/* for of循环 必须是遍历的可迭代的对象 for of兼容性还不够,移动端安卓微信浏览器貌似不支持,Safari的可以; web端IE支持也不够,chrome可以。 for in 循环 key值代表的是属性 for of 循环 item代表的是值 */ var arr = [10,20,30,40]; for(let item of arr){ console.log(item);// 10 20 30 40 }
2、iterator
/* iterator是一种机制,它是一种接口。为各种不同的数据结构提供了统一的 访问机制。任何数据只要有了iterator接口,就可以完成遍历操作 作用: 1、为各种数据结构,提供统一接口,简便访问接口 2、使数据结构的成员能够按照某种次序排列 3、ES6新增的for of循环 iterator接口主要提供for of消费 */ // 手写iterator接口 function iterator(arr){ let index = 0; return { next(){ if(index<arr.length){ return {value:arr[index++],done:false} }else{ return {value:undefined,done:true} } } } } var obj = [1,2,3,4]; let it = iterator(obj); it.next();// {value: 1, done: false} it.next()// {value: 2, done: false} it.next();// {value: 3, done: false} it.next()// {value: 4, done: false} it.next()// {value: undefined, done: false} /* 1、iterator遍历的过程: 每一次调用next方法都会返回数据结构的当前成员信息,具体来说, 就是返回一个包含value和done的属性对象,其中value属性是当前对象, done属性是一个布尔值,表示遍历是否结束 2、ES6规定,凡是具有Symbol.iterator属性的数据结构都具有Iterator接口 3、对象默认是没有Symbol.iterator属性的,因此如果想要进行遍历,必须手 动添加 */
3、给对象添加iterator函数
Object.prototype[Symbol.iterator] = function values() { console.log(this); var index = 0; var keys = Object.keys(this); var _this = this return { next() { if(index < keys.length){ return { value: _this[keys[index++]], done: false }; }else{ return {value: undefined, done:true }; } } } } var obj = { name: "张三", age: 19, sex: "男" } for(let value of obj){ console.log(value); }
三、函数
1、函数参数默认值
// ES6之前函数如何设定默认值 function fn(x){ var x = x || 0; } // ES6函数默认值 function fn(x = 0){} // 如果传递了就用传递的参数,如果没有传递则x值等于0
2、剩余参数
function fn(a,...rest){ console.log(...rest);// [2,3,4,5] } fn(1,2,3,4,5); // fn这个函数中 a接收对应参数1 ...rest以数组形式接收剩余参数
3、箭头函数
// 语法一: var fn = (a)=>{ console.log(a); } // 简单的来说箭头函数就是将function 换成了()=> // 语法二: var fn = a=>a; // 当前函数意思为 返回函数a这个值,如果不写{}默认表示return //语法三: var fn = a =>({}); // 当前函数意思为 返回一个对象 /* 箭头函数特点: 1、没有this指向,this的指向会指向声明时离自己最近的那个作用域的对象 2、箭头函数中没有arguments这个参数 3、不能当做构造函数 4、箭头函数不能当做generator函数 */
四、Set集合
/* Set:集合 1、它类似于数组,但成员的值是唯一的,没有重复的值,并且是无序的 2、set是一个构造函数 3、set每次执行完毕以后都会返回一个set,因此可以通过链式操作来进行 操作 */ let s = new Set(); //添加 s.add("a").add("b"); //删除 返回值是一个布尔值 s.delete("a"); //判断a是否为set的成员返回一个布尔值 s.has("a"); //清除所有,没有返回值 s.clear(); //返回所有键名 s.keys(); //返回所有value值 s.values() //返回所有键值对 s.entries() //通过for of可以得到每一个值
五、Map字典类型结构
/* 1、字典:用来存储不重复key的hash结构,不同于set集合,字典使 用的[键,值]的形式来存储的 2、map执行完毕后都会返回一个map因此可以进行链式操作 3、特点: 普通对象只能通过字符串来当做key值,但是Map可以用任意值来当做key值 */ 1、创建map对象 let map = new Map([ ["a",1]; ]) console.log(map);// {"a"=>1} 2、获取map长度 map.size 3、添加数组 map.set("key",val); 4、获取map值 map.get("key") 5、删除数据 map.delete("key"); 6、判断当前map中是否存在某个值 map.has("key"); 7、清除所有数据 map.clear(); 8、获取所有map key值 map.keys(); 9、获取所有map value值 map.values() 10、获取所有map键值对 map.entries() 11、遍历map对象 forEach //注意:map中key值得顺序都是按照添加的顺序来排列的
1、路在何方?
路在脚下
2、何去何从?
每个人都在探索,未来的方向在何处。如果说某些方向是世人已经公认的,那么就先按照公认的去走吧(ps:站在巨人的肩膀上看世界会清晰)。
如果说方向,当今世人还不清晰准确。那么就大胆往前走吧,对与错并不重要。心中的方向更加重要。