首页 > 其他分享 >Object的原型没有实现Symbol.iterator所以不算做可迭代对象。

Object的原型没有实现Symbol.iterator所以不算做可迭代对象。

时间:2023-11-15 23:55:04浏览次数:33  
标签:console log iterator Symbol Object let

以下哪些对象是Javascript内置的可迭代对象?

A
Array

B
Map

C
String

D
Object

正确答案:ABC

ES6 规定,默认的 Iterator 接口部署在数据结构的Symbol.iterator属性,或者说,一个数据结构只要具有Symbol.iterator属性,就可以认为是“可遍历的”(iterable)。

原生具备 Iterator 接口的数据结构如下。

Array      
Map      
Set      
String      
TypedArray      
函数的 arguments 对象      
NodeList 对象     

JavaScript的可迭代对象
1)数组Arrays

console.log([][Symbol.iterator])

for(let x of ['a','b'])
console.log(x)

2)字符串Strings
console.log(""[Symbol.iterator])
for(let x of "abc")
console.log(x)

3)Map
let map = new Map().set('a', 1).set('b', 2);
console.log(map[Symbol.iterator]);
for (let pair of map) {
console.log(pair);
}

4)Set
let set = new Set().add('a').add('b');
for (let x of set) {
console.log(x);
}

5)arguments
function printArgs() {
for (let x of arguments) {
console.log(x);
}
}
printArgs('a', 'b');

6)Typed Arrays

7)Generators,ES6新增加

js内置的可迭代对象:
Array,Map,Set,String,TypedArray,函数的 arguments 对象,NodeList 对象。

Object的原型没有实现Symbol.iterator所以不算做可迭代对象。
Object的属性是没有先后顺序的,要开发者自己指定遍历顺序,这是没有内置Iterator的原因之一。
另外就是es6的map已经满足了需要迭代Object的场景,不需要再给Object实现该方法。

标签:console,log,iterator,Symbol,Object,let
From: https://www.cnblogs.com/longmo666/p/17835170.html

相关文章

  • symbol对象不能用于数据运算,包括+、-、*、/
    执行以下程序,会抛出语法错误的式子是()vars=Symbol('key');...①console.log(s+'123');...②varobj={[s]:function(){console.log(1);}...③}varb=Reflect.ownKeys(obj);...④A①B②C③D④正确答案:BSymbol是不完整的构造函数,创建symbol对象时不......
  • 论文精读:用于少样本目标检测的元调整损失函数和数据增强(Meta-tuning Loss Functions a
    论文链接:Meta-TuningLossFunctionsandDataAugmentationforFew-ShotObjectDetectionAbstract现阶段的少样本学习技术可以分为两类:基于微调(fine-tuning)方法和基于元学习(meta-learning)方法。基于元学习的方法旨在学习专用的元模型,使用学到的先验知识处理新的类,而基于微......
  • 2.5 Windows驱动开发:DRIVER_OBJECT对象结构
    在Windows内核中,每个设备驱动程序都需要一个DRIVER_OBJECT对象,该对象由系统创建并传递给驱动程序的DriverEntry函数。驱动程序使用此对象来注册与设备对象和其他系统对象的交互,并在操作系统需要与驱动程序进行交互时使用此对象。DRIVER_OBJECT对象还包含了与驱动程序所管理的设备......
  • Hive_解析 get_json_object
    get_json_object(stringjson_string,stringpath)说明: 第一个参数填写json对象变量,第二个参数使用$表示json变量标识,然后用.或[]读取对象或数组。如果输入的json字符串无效,那么返回NULL。 每次只能返回一个数据项。举例: data为test表中的字段,数据结构如下:......
  • Symbol是构造方法,但它不是完整的构造方法,使用Symbol来创建Symbol对象时,不使用new运算
    执行以下程序,下列选项中,说法正确的是()vars1=Symbol('a');vars2=Symbol('a');vars3=Symbol.for('b');vars4=Symbol.for('b');console.log(typeofs1);...①console.log(s1==s2);...②console.log(s3==s4);...③A①式输出结果为Object......
  • C++ 中 <iterator> <functional> <numeric> 库好用的函数
    C++中<iterator><functional><numeric>库好用的函数泰裤辣!<iterator>简述:迭代器省代码用的。std::advance记忆方法:advance-前进。形如:advance(it,step),表示it迭代器自增step步。实现类似于:functionadvance(&it,n): whilen>0: --n ++it whilen<0:......
  • Object.entries()
    Object.entries()方法返回一个给定对象自己的字符串键值对的数组。constobj={a:"aa",b:"bb",c:"cc"};console.log(Object.entries(obj),"Object.entries(obj)Object.entries(obj)");打印显示是这样[["a",......
  • 读书笔记 -- Junit 实战(3rd)Ch07 用 mock object 进行测试
    8.1mockobject简介隔离测试:最大优点是能编写专门测试单一方法的测试代码,而不会受到被测方法调用某个对象所带来的副作用的影响。mockobject(mocks):非常适合测试与代码的其余部分隔离开的一部分代码。 mocks与隔离测试的区别:mock并不实现任何逻辑,只提供一些方法的空壳,......
  • Ubuntu18.04 打开终端报错: ERROR: ld.so: object ‘xxx.so‘ from LD_PRELOAD cannot
    1、问题现象在文件界面打开终端的时候,突然发现开头有一堆报错ERROR:ld.so:object'./envlib.so'fromLD_PRELOADcannotbepreloaded(cannotopensharedobjectfile):ignored.ERROR:ld.so:object'./libharfbuzz.so.0'fromLD_PRELOADcannotbepreloaded(cannotope......
  • Python Object of type float32 is not JSON serializable
    前言使用json.dumps(result)对数据转JSON数据出现错误:TypeError:Objectoftypefloat32isnotJSONserializable数据中存在的float32数据是numpy格式的数据,Python内置的float类型可以写入JSON中,但是numpy的float32类型数据不能写入JSON,所以应将numpy.flo......