我们能否以某种方式为下面的语句使用展开运算而不导致类型错误?
在微信公众号上看到的题目
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]
13 回答13.1k 阅读
7 回答2.2k 阅读
5 回答1.6k 阅读
5 回答1.8k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
6 回答1.4k 阅读✓ 已解决
对象怎么展开也不能展开成一个数组啊= =....
{...obj}