1const person = { 2 name: "Lydia Hallie", 3 age: 21 4} 5 6[...person] // ["Lydia Hallie", 21]
本题为“单选题”
参考答案:
正确选项:B:*[Symbol.iterator]() { for (let x in this) yield this[x] }
对象默认并不是可迭代的。
如果迭代规则被定义,则一个对象是可迭代的(An iterable is an iterable if the iterator protocol is present)。
我们可以通过添加迭代器symbol [Symbol.iterator]
来定义迭代规则,其返回一个 generator 对象,比如说构建一个 generator 函数 *[Symbol.iterator]() {}
。
如果我们想要返回数组 ["Lydia Hallie", 21]
: yield* Object.values(this)
,这个 generator 函数一定要 yield 对象 person
的 values 。
另外,本题还需要注意的一个点:
1const person = { 2 name: 'lzh', 3 age: 21 4} 5 6// 方法一 7person[Symbol.iterator] = function* () { 8 yield* Object.values(this) 9} 10 11// 方法二 12person[Symbol.iterator] = function* () { 13 for (let x in this) { 14 yield this[x] 15 } 16} 17 18console.log([...person]); //['lzh', 21]
最近更新时间:2023-03-03