我们能否以某种方式为下面的语句使用展开运算而不导致类型错误?
在微信公众号上看到的题目
var obj = { x: 1, y: 2, z: 3 };
[...obj]; // TypeError
会报出这个错误应该说的是不是可迭代的对象
var obj = { x: 1, y: 2, z: 3 };
[...obj]; // TypeError
会报出这个错误应该说的是不是可迭代的对象
扩展运算符语法只能用于可迭代对象,即实现了Iterator
接口(即迭代器)的对象.像 Array,String,Map,Set 都内置了迭代器,所以可以直接用扩展运算符.
那一个没有内置迭代器的对象要怎么样使用扩展运算符呢?很简单,给他加上迭代器就可以了.
如下 ↓
var obj = { x: 1, y: 2, z: 3 }
// 定义迭代器
obj[Symbol.iterator]=function*(){
for(let key in this)
yield this[key]
}
// 记得在中括号前面加上分号
;[...obj]
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
对象怎么展开也不能展开成一个数组啊= =....
{...obj}