關於使用ES6語法實現對物件的迭代

2021-08-14 03:24:57 字數 1854 閱讀 8706

使用[symbol.iterator]實現迭代

備註:此處的操作,由於使用的方法是object.keys(object)的方式獲取到物件的屬性。

所以遍歷所使用的 鍵(keys()),值(values()),和鍵值對(entries())方法,均採用symbol屬性。

/**

* 方法名採用symbol作為屬性唯一識別符號

*@type

*/let keys = symbol("keys");

let values = symbol('values');

let entries = symbol('entries');

/** * 示例操作物件

*@type }

*/const person =

/** * 獲取鍵值

*@returns

*/person[keys] = function () : }}

}}

}/**

* 獲取值

*@returns

*/person[values] = function () : }}

}}

}/**

* 鍵值對獲取方式

*@returns

*/person[entries] = function () : }}

}}

}**驗證****

//物件屬性遍歷,其實這個可以用更簡單的方式遍歷出來,採用for...in

for (let key of person[keys]())

//for-in 遍歷屬性

for (let key in person)

//物件屬性值遍歷,同理可以採用for-in

for (let value of person[values]())

//採用for-in遍歷同理

for (let key in person)

//物件屬性鍵值對遍歷

for (let [key, value] of person[entries]())

說明:關於兩者的區別,具體應該跟順序有關係,本身物件是無序的,在使用不同瀏覽器執行出來的效果可能順序是不一致的(for-in),這一點在之前接觸的專案中有接觸過。至於for-of 通過迭代器是具有一定順序的遍歷。所以兩者如果是在順序上有嚴格的要求的,建議採用for-of的方式進行遍歷。也就是實現[symbol.iterator]**

採用generator實現物件的遍歷

此處採用的示例操作物件依舊是一方式中的person

/**

* 鍵值對獲取方式

* @param obj 此處的物件為字面性物件

*/function* entries(obj)

}/**

* 鍵獲取方式

* @param obj 此處的物件為字面性物件

*/function* keys(obj)

}/**

* 鍵值獲取方式

* @param obj 此處的物件為字面性物件

*/function* values(obj)

}**測試****

//鍵值

for (let [key, value] of entries(person))

//鍵for (let key of keys(person))

//鍵值

for (let value of values(person))

今日學習成果就展示到這了。如果有志同道合的,有更好的**,歡迎指點與分享。

ES6中對物件的擴充套件

es6允許直接寫入變數和函式作為物件的屬性和方法。這樣的書寫更加簡潔。es6允許在物件中只寫屬性名,不寫屬性值。這時,屬性值等於屬性名所代表的變數。function f x y f 1,2 object function getpoint getpoint js語言定義物件的屬性有兩種方法。obj....

關於es6新語法使用的總結

1.關於splice index,1,該方法將當前值替換 編輯目錄,移出滑鼠,將當然資料替換為新資料,原始的陣列也進行替換 inputsub index,item const edititem rootli.find edititem const inputmenu rootli.find inpu...

ES6基本語法使用

let 宣告變數 形成塊級作用域 比如if for while 變數宣告不會被提公升 迴圈中解決下標是最後乙個值的問題 const 宣告常量 宣告後賦值 且該值不會被修改 和let一樣是塊級作用域 結構賦值 一 陣列賦值 例子1 左右相同賦值 var a,b,c,d 1,2,3,4 例子2 左右不同...