如何让[a,b] = {a:b,b:1}解构赋值成功?
数组解构本质上就是调用数组的迭代器,迭代器可以用Symbol.iterator这个属性访问。
const arr = [1,2,3]
var [a,b,c] = arr
//本质上是
const iterator = array[Symbol.iterator]()
var a = iterator.next().value
var b = iterator.next().value
var c = iterator.next().value
因为对象本身并不存在迭代器,所有不能用for..of遍历,所以如果我们需要满足题目条件,就得手动为这个对象添加一个迭代器
const obj = {
a:1,
b:2,
[Symbol.iterator](){
let index = 0
let keys = Object.keys(obj)
return{
next(){
if(index<keys.length){
return{
done:false,
value:obj[keys[index++]]
}
}
return {done:true,value:underfind}
}
}
}
}
const [a,b] = obj