题目如下:
// 使下方式子成立
let [a,b] = {c:12, d: 34}
分析:
1、在ES6中,有一个可迭代协议,在这个协议中,规定一个对象如果包含一个知名符号属性Symbol.iterator
,这个属性值是一个返回迭代器的函数,即
{
[Symbol.iterator]: function() {return '迭代器'}
}
那么这个对象就是一个可迭代对象。如常见的可迭代对象就是数组,因此ES6中的let [a, b] = [1,2]
可以成立。
2、要使题目中的式子成立,必须使等号右边成为一个可迭代对象,有两种方法:
- 在对象中增加一个知名符号属性,且属性值是一个返回迭代器的函数。
- 在
Object
原型链上增加一个知名符号属性,且属性值是一个返回迭代器的函数。
代码如下:
方法1:
let [a,b] = {
c: 12,
d:34,
[Symbol.iterator]:function(){
return Object.values(this)[Symbol.iterator]()
}
}
console.log(a,b); // 12 34
方法2:
Object.prototype[Symbol.iterator] = function() {
return Object.values(this)[Symbol.iterator]();
}
let [a, b] = {c: 12, d: 34};
console.log(a,b); // 12 34
ps:切勿看看就好,看完之后最好自己手动敲敲代码,才能更好掌握!