可迭代协议规定,一个对象满足
{
[Symblo.iterator]: function(){
return 迭代器;
}
}就是一个可迭代对象,数组就是常见的可迭代对象,
如何能让var [a,b] = {a: 1, b: 2}成立呢?
解题思路:
/**
* 使用数组解构,右边部分需要是一个可迭代对象,否则会报错
* 所以我们就可以给对象的原型上设置Symbol.iterator属性
*/
Object.prototype[Symbol.iterator] = function() {
return Object.values(this)[Symbol.iterator]();
//Object.values(this)返回一个数组,数组的原型上有一个Symbol.iterator方法
}
var [a, b] = {a: 1, b: 2};