根据ES6,可以使用从自定义生成器返回的数组解构。但现在我无法想出一种简单对象解构的方法,我认为这应该是可行的(使用Babel和Polyfill):
class Test {
constructor () { this.props = {a: 1, b: 2}; }
*[Symbol.iterator]() { yield* this.props; }
}
const {a, b} = new Test();
这应该是可以工作的,对吧?因为它总是简单地返回 a 和 b 的未定义值。
function *gen() { for(i = 0, l = 10; i < l; i = i + 2) { yield i }} const [a, b, c, d, e] = gen(); console.log(a,b,c,d,e);
工作正常。this.props
没有Symbol.iterator
,因此像您在那里尝试做的那样进行传递不起作用。 - user4639281