迭代示例
一个对象在JavaScript中被视为可迭代的(iterable),是因为它实现了特定的迭代协议。这个协议主要包括两个方面:
可迭代协议(Iterable Protocol):对象必须有一个[Symbol.iterator]方法,该方法返回一个迭代器(iterator)对象。这个迭代器对象必须有一个next()方法,该方法返回一个对象,该对象具有两个属性:value(当前迭代的元素)和done(一个布尔值,指示是否已到达迭代的末尾)。
迭代器协议(Iterator Protocol):返回的迭代器对象必须遵循迭代器协议,即它必须有一个next()方法。当调用next()方法时,它应返回一个对象,该对象具有value和done两个属性。value属性包含迭代器的下一个值,done属性是一个布尔值,如果迭代器已经完成了其迭代(即没有更多的值),则为true,否则为false。
解构示例
在JavaScript中,对象的属性可以是可枚举的(enumerable)或不可枚举的(non-enumerable)。可枚举属性是那些可以通过for...in循环、Object.keys()、JSON.stringify()等方法访问到的属性。而不可枚举属性则不会出现在这些操作中。
然而,对于解构赋值(destructuring assignment),不论属性是否可枚举,只要它们存在于对象中,都可以被解构出来。解构赋值是直接通过属性名来提取值的,并不依赖于属性的可枚举性。