給物件手動新增迭代機制
阿新 • • 發佈:2020-07-24
程式碼如下:
1 //定義一個物件 例: 2 let obj = { 3 'name': '張飛', 4 'age': 23, 5 'sex':'男' 6 } 7 8 //手動給object 部署 Symbol.iterator介面機制 9 obj[Symbol.iterator] = function(){ 10 //求物件長度 物件方法 11 var len = Object.keys(obj).length;12 var index = 0;//定義下標 13 var key;//定義鍵 14 var keyVal;//定義鍵值 15 return {//返回next方法 16 next : function(){ 17 key = Object.keys(obj)[index++];//通過下邊選中鍵 18 keyVal = obj[key];//對應的鍵值 19 //當下邊小於等於物件長度時 返回 迭代資料20 return index <= len ? 21 {value : key+':'+ keyVal , done: false} : 22 {value : undefined , done : true} 23 } 24 } 25 } 26 27 //呼叫 介面 28 29 let newiter = obj[Symbol.iterator]();30 for(o of obj){ 31 console.log(newiter.next()); 32 }