当前位置: 首页 > news >正文

做电商平台网站有哪些内容/外贸国际网站推广

做电商平台网站有哪些内容,外贸国际网站推广,乌海品牌网站建设,wordpress 炫酷插件一、可迭代协议 实现 Iterable 接口(可迭代协议)要求同时具备两种能力:支持迭代的自我识别能力和创建实现 Iterator 接口的对象的能力。在 ECMAScript 中,这意味着必须暴露一个属性作为“默认迭代器”,而 且这个属性必…

一、可迭代协议

实现 Iterable 接口(可迭代协议)要求同时具备两种能力:支持迭代的自我识别能力和创建实现
Iterator 接口的对象的能力。在 ECMAScript 中,这意味着必须暴露一个属性作为“默认迭代器”,而
且这个属性必须使用特殊的 Symbol.iterator 作为键。这个默认迭代器属性必须引用一个迭代器工厂
函数,调用这个工厂函数必须返回一个新迭代器。
很多内置类型都实现了 Iterable 接口:
 字符串
 数组
 映射
 集合
 arguments 对象
 NodeList 等 DOM 集合类型
检查是否存在默认迭代器属性可以暴露这个工厂函数:

let num = 1; 
let obj = {}; 
// 这两种类型没有实现迭代器工厂函数
console.log(num[Symbol.iterator]); // undefined 
console.log(obj[Symbol.iterator]); // undefined 
let str = 'abc'; 
let arr = ['a', 'b', 'c']; 
let map = new Map().set('a', 1).set('b', 2).set('c', 3); 
let set = new Set().add('a').add('b').add('c'); 
let els = document.querySelectorAll('div');

// 这些类型都实现了迭代器工厂函数

console.log(str[Symbol.iterator]); // f values() { [native code] } 
console.log(arr[Symbol.iterator]); // f values() { [native code] } 
console.log(map[Symbol.iterator]); // f values() { [native code] } 
console.log(set[Symbol.iterator]); // f values() { [native code] } 
console.log(els[Symbol.iterator]); // f values() { [native code] } 
// 调用这个工厂函数会生成一个迭代器
console.log(str[Symbol.iterator]()); // StringIterator {} 
console.log(arr[Symbol.iterator]()); // ArrayIterator {} 
console.log(map[Symbol.iterator]()); // MapIterator {} 
console.log(set[Symbol.iterator]()); // SetIterator {} 
console.log(els[Symbol.iterator]()); // ArrayIterator {} 

实际写代码过程中,不需要显式调用这个工厂函数来生成迭代器。实现可迭代协议的所有类型都会
自动兼容接收可迭代对象的任何语言特性。接收可迭代对象的原生语言特性包括:
 for-of 循环
 数组解构
 扩展操作符
 Array.from()
 创建集合
 创建映射
 Promise.all()接收由期约组成的可迭代对象
 Promise.race()接收由期约组成的可迭代对象
 yield*操作符,在生成器中使用
这些原生语言结构会在后台调用提供的可迭代对象的这个工厂函数,从而创建一个迭代器:

let arr = ['foo', 'bar', 'baz']; 
// for-of 循环
for (let el of arr) { console.log(el); 
} 
// foo 
// bar 
// baz 
// 数组解构
let [a, b, c] = arr; 
console.log(a, b, c); // foo, bar, baz 
// 扩展操作符
let arr2 = [...arr]; 
console.log(arr2); // ['foo', 'bar', 'baz'] 
// Array.from() 
let arr3 = Array.from(arr); 
console.log(arr3); // ['foo', 'bar', 'baz'] 
// Set 构造函数
let set = new Set(arr); 
console.log(set); // Set(3) {'foo', 'bar', 'baz'} 
// Map 构造函数
let pairs = arr.map((x, i) => [x, i]); 
console.log(pairs); // [['foo', 0], ['bar', 1], ['baz', 2]] 
let map = new Map(pairs); 
console.log(map); // Map(3) { 'foo'=>0, 'bar'=>1, 'baz'=>2 } 

如果对象原型链上的父类实现了 Iterable 接口,那这个对象也就实现了这个接口:

class FooArray extends Array {} 
let fooArr = new FooArray('foo', 'bar', 'baz'); 
for (let el of fooArr) { console.log(el); 
} 
// foo 
// bar 
// baz 

二、迭代器协议

迭代器是一种一次性使用的对象,用于迭代与其关联的可迭代对象。迭代器 API 使用 next()方法
在可迭代对象中遍历数据。每次成功调用 next(),都会返回一个 IteratorResult 对象,其中包含迭
代器返回的下一个值。若不调用 next(),则无法知道迭代器的当前位置。
next()方法返回的迭代器对象 IteratorResult 包含两个属性:done 和 value。done 是一个布
尔值,表示是否还可以再次调用 next()取得下一个值;value 包含可迭代对象的下一个值(done 为
false),或者 undefined(done 为 true)。done: true 状态称为“耗尽”。
“迭代器”的概念有时候容易模糊,因为它可以指通用的迭代,也可以指接口,还可以指正式的迭
代器类型。
注意: 迭代器维护着一个指向可迭代对象的引用,因此迭代器会阻止垃圾回收程序回收可
迭代对象。

总结:

本期我们分享的是JavaScript(九)初始迭代器协议,
我们下期:JavaScript的自定义迭代器和提前终止迭代器
原创不易,期待您的点赞关注与转发评论😜😜

http://www.jmfq.cn/news/4934521.html

相关文章:

  • 个人网站开发的论文/搜索引擎是什么
  • 网站全屏轮播代码 js/中国站长工具
  • 公司自己建立网站/优化关键词的作用
  • 莒县住房和城乡规划建设局网站/站长之家怎么用
  • 乐昌门户网站/独立站seo是什么
  • 深圳网站建设大公司好/杭州排名优化公司
  • 广州网站建设专家/国内最近发生的重大新闻
  • 网上购物网站建设/排名优化关键词公司
  • 外文网站制作/磁力猫torrentkitty官网
  • 如何选择网站建设/谷歌seo优化
  • 做sm网站违法吗/怎么推广自己的微信号
  • 教育类网站前置审批/成都私人做网站建设
  • 做网站前端要会什么/磁力bt种子搜索神器
  • app应用网站单页模板下载/小时seo
  • 愚人网站建设/360优化大师软件
  • 东莞网站SEO优化托管/海外推广专员
  • 石家庄市网站建设培训班/百度销售是做什么
  • 智慧团建初始密码123456/seo优化推广工程师招聘
  • 浙江义乌小商品批发进货网/seo项目培训
  • 政府网站建设管理通知/武汉seo诊断
  • wordpress双语言设置/公司网站怎么优化
  • win8建立网站/网络营销课程主要讲什么内容
  • 国内专门做情侣的网站商城/百度产品大全
  • 企业查在线查询官网/seo优化专员招聘
  • pc网站建设意见/信息流优化师怎么入行
  • 所有网站打不开/seo软文推广工具
  • 建盏/夫唯seo视频教程
  • 可以中英切换的网站怎么做/seo推广专员工作内容
  • 销售性网站建设需求/企业营销推广策划
  • 搞钱/seo中心