es6数组解构的原理初探

原理

以前只用过数组解构为数组,或者将其他类数组解构为数组,但是还不知道对象为什么不能解构为数组

后面学习到了Symbol.iterator属性以后才知道,只要一个对象是可迭代的,那它就可以迭代为数组。

代码示例如下

代码

let obj = {
    0: 'zero',
    1: 'one',
    2: 'two',
    length: 3
}

// 解构的原理

obj[Symbol.iterator] = function() {
    // 返回一个迭代器对象
    return {
        cur: 0,
        final: this.length,
        next() {
            if (this.cur < this.final) {
                return {
                    value: this.cur++,
                    done: false
                }
            } else {
                return {
                    done: true
                }
            }
        }
    }
}

for (let val of obj) {
    console.log(val);
}

console.log([...obj]); // 对象解构为数组
posted @ 2022-04-01 16:20  azoux  阅读(79)  评论(0编辑  收藏  举报