整理数组的内容接近尾声,先把到ES5之前的做一个表格似的整理:
接着在迭代方法中,整理出一种新的方法:entries() 方法。这种方法是在ECMA-262第六版中提出了草案,进行了最初的定义。在EcmaScript 2017 也就是传说中的ES8作为新语法出现了。
它的返回一个新数组的迭代器对象包含数组中的每个索引的键值对。兼容性:pc端IE不兼容,手机端可兼容
举个例子:
vararr= ['a','b','c'];
varnewArr=arr.entries();
console.log(newArr);
//返回一个访问器Iterator{}
console.log(newArr.next());
//[0, "a"]
console.log(newArr.next());
//[1, "b"]
在这个例子中虽然我们看到了结果,但发现了一个jquery的方法.next()。其实,这并不是jquery的方法,并不是。
它是js的方法,在之前我们并没有学过这种方法。那么这种方法是做什么用的呢?
看下面:
在Java集合中有一种集合叫set集合,那么什么又是集合呢?Java中,数组在定义的时候是有长度限制的,少于这个长度则浪费内存,而多余这个长度又放不下,所以出现了“集合”。集合我们可以把它理解为一个可变长数组,可以在后期时进行拓展。这种集合遍历的时候有一种方法也是.next(),这个.next()方法的返回值是true或false,返回true是代表后面还有元素,而fales则代表后面没有元素了。
回到正题,说一下next方法的前世今生:
next()方法是,Generator(生成器)函数的一种方法。Generator 函数有多种理解角度。从语法上,可以把它理解成一个生成器,封装了多个内部状态。
next()返回两属性和值的对象。还可以向下一个方法提供一个参数,以便将值发送给生成器。
可以简单理解为,它会在一个对象中逐一寻找,返回一个对象,包含一个键值对。返回值的两个对象元素为Object { value: 1, done: false }。value键值代表值,值为第一个找到的对象值,done返回false代表后面还有对象元素可以继续寻找,如果返回true则代表后面没有对象元素了。但IE不兼容。
和Java不同的是done的返回值,没有元素时返回true,而还有可遍历的元素返回false
function*fn() {
yield1;
yield2;
yield3;
}
varfun=fn();// "Generator { }"
fun.next();
//"Object { value: 1, done: false }"
fun.next();
//"Object { value: 2, done: false }"
fun.next();
//"Object { value: 3, done: false }"
fun.next();
//"Object { value: undefined, done: true }"
说了这么多,其实有时候从一个方法深挖下去的时候,还是会发现跟对关联的方法的,树根一样越挖越多。不过还是很有意思的~
本微信号所有内容为前端客用户原创,前端客已获得独家授权,欢迎分享。
如有转载需求请留言征询,对于未经许可私自篡改内容、转载的行为我们保留追究维权的合法权利!
领取专属 10元无门槛券
私享最新 技术干货