use-onion
Version:
在任意函数上使用洋葱模型
16 lines (15 loc) • 384 B
JavaScript
export default function defIterator(obj, ...propNames) {
obj[Symbol.iterator] = ()=>{
let arr = [obj]
for (let i = 0; i < propNames.length; i++) {
Object.defineProperty( arr, String(i +1), {
get(){return obj[propNames[i]] }
})
}
let i = 0
return {
next:()=>({ value:arr[i++],done:i>arr.length })
}
}
return obj
}