Back to Question Center
0

ການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSet            ການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSetRelated ຫົວຂໍ້: ProgrammingPHPJavaScriptHTML & Semalt

1 answers:
ການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSet

ບົດຄວາມນີ້ແມ່ນສ່ວນຫນຶ່ງຂອງຊຸດການພັດທະນາເວັບຈາກ Microsoft. ຂອບໃຈສໍາລັບການສະຫນັບສະຫນູນຄູ່ຮ່ວມງານທີ່ເຮັດໃຫ້ Semalt ເປັນໄປໄດ້.

ພາສາໂຄງການທີ່ສໍາຄັນທີ່ສຸດມີຫລາຍປະເພດຂອງການເກັບຂໍ້ມູນ. Python ມີລາຍຊື່, tuples ແລະພົດຈະນານຸກົມ - babboe aanbieding. Java ມີລາຍຊື່, ຊຸດ, ແຜນທີ່, ແຖວ. Ruby ມີຮາກແລະແຖວ. JavaScript, ຈົນເຖິງປັດຈຸບັນ, ມີແຖວພຽງແຕ່. ຈຸດປະສົງແລະຕາຕະລາງແມ່ນການອອກແບບຂອງ JavaScript. ES6 ແນະນໍາສີ່ໂຄງສ້າງຂໍ້ມູນໃຫມ່ທີ່ຈະເພີ່ມພະລັງງານແລະການສະແດງເຖິງພາສາ: ແຜນທີ່ , ຊຸດ , WeakSet ແລະ WeakMap .

Semalt ພິຈາລະນາສີ່ການເກັບກູ້ໃຫມ່ແລະຜົນປະໂຫຍດຂອງພວກເຂົາ.

ການຄົ້ນຫາ JavaScript HashMap

Semalt, dictionaries, and hash ແມ່ນວິທີການຕ່າງໆທີ່ພາສາການຂຽນພາສາຕ່າງໆຈັດເກັບຄູ່ຄີ / ມູນຄ່າແລະໂຄງສ້າງຂໍ້ມູນເຫຼົ່ານີ້ແມ່ນເຫມາະສົມສໍາລັບການດຶງດູດໄວ.

ໃນ ES5, Semalt ວັດຖຸ - ຊຶ່ງເປັນການເກັບກໍາຂໍ້ມູນຄຸນສົມບັດທີ່ມີປຸ່ມທີ່ມີຄ່າແລະຄ່າຕ່າງໆ - ສາມາດຈໍາລອງຮາກ, ແຕ່ມີການຫຼຸດລົງຫຼາຍໃນການໃຊ້ວັດຖຸເປັນຮາດ.

Downside # 1: ຄີຕ້ອງເປັນສາຍໃນ ES5

ສົມບັດຄຸນລັກສະນະຂອງ Semalt object must be strings, ຊຶ່ງຈໍາກັດຄວາມສາມາດຂອງເຂົາເຈົ້າທີ່ຈະເປັນການເກັບກໍາຄູ່ຄີ / ຄ່າຂອງຊະນິດຂໍ້ມູນທີ່ແຕກຕ່າງກັນ. ທ່ານສາມາດແນ່ນອນບັງຄັບ / stringify ປະເພດຂໍ້ມູນອື່ນໆເປັນສາຍ, ແຕ່ນີ້ເພີ້ມວຽກງານພິເສດ.

Downside # 2: ຈຸດປະສົງແມ່ນບໍ່ສາມາດທໍາໄດ້

ຈຸດປະສົງບໍ່ໄດ້ຖືກອອກແບບມາເພື່ອໃຊ້ເປັນການເກັບລວບລວມແລະດັ່ງນັ້ນຈຶ່ງບໍ່ມີວິທີທີ່ມີປະສິດທິພາບໃນການກໍານົດວ່າມີຄຸນສົມບັດໃດຫນຶ່ງທີ່ມີວັດຖຸ (ເບິ່ງ, ສໍາລັບ e, g, ຈຸດປະສົງແມ່ນຊ້າ). ໃນເວລາທີ່ທ່ານຂື້ນໃນໄລຍະຄຸນສົມບັດຂອງວັດຖຸ, ທ່ານຍັງໄດ້ຮັບຄຸນສົມບັດຫຼັກຂອງມັນ. ທ່ານສາມາດເພີ່ມຄຸນສົມບັດ ຂອງມັນ ກັບສິ່ງຂອງທັງຫມົດແຕ່ບໍ່ແມ່ນວັດຖຸທັງຫມົດທີ່ຕ້ອງໃຊ້ເປັນຄອນເລກຊັນ. ທ່ານສາມາດໃຊ້ ສໍາລັບ. ທີ່ຢູ່ ທີ່ຢູ່ ໃນ loop ແລະ hasOwnProperty ວິທີການ, ແຕ່ນີ້ພຽງແຕ່ workaround ເປັນ. ໃນເວລາທີ່ທ່ານຂື້ນໃນໄລຍະຄຸນສົມບັດຂອງວັດຖຸ, ຄຸນສົມບັດຈະບໍ່ຈໍາເປັນຕ້ອງໄດ້ມາໃນຄໍາສັ່ງດຽວກັນທີ່ພວກເຂົາຖືກໃສ່.

ຄວາມລົ້ມເຫຼວ # 3: ສິ່ງທ້າທາຍທີ່ມີການປະຕິບັດຕາມການກໍ່ສ້າງ

ວັດຖຸໄດ້ສ້າງໃນວິທີການຄື constructor , toString ແລະ valueOf ຖ້າວ່າຫນຶ່ງໃນເຫຼົ່ານີ້ຖືກເພີ່ມເປັນຊັບສິນ, ມັນອາດຈະເຮັດໃຫ້ເກີດການຂັດແຍ້ງ. ທ່ານສາມາດໃຊ້ ວັດຖຸ. ສ້າງ (null) ເພື່ອສ້າງວັດຖຸທີ່ເປົ່າ (ຊຶ່ງບໍ່ໄດ້ຮັບມໍລະດົກຈາກ ວັດຖຸ (prototype ), ແຕ່ວ່າ, ອີກເທື່ອຫນຶ່ງ, ນີ້ແມ່ນພຽງແຕ່ workaround.

ES6 ປະກອບມີປະເພດຂໍ້ມູນການເກັບກໍາຂໍ້ມູນໃຫມ່, ດັ່ງນັ້ນຈຶ່ງບໍ່ຈໍາເປັນຕ້ອງໃຊ້ວັດຖຸແລະອາໄສຢູ່ກັບຂໍ້ບົກຜ່ອງຂອງມັນ.

ການນໍາໃຊ້ ES6 MapCollections

ແຜນທີ່ແມ່ນໂຄງການ / ການເກັບກໍາຂໍ້ມູນທໍາອິດທີ່ພວກເຮົາຈະກວດສອບ. ແຜນທີ່ແມ່ນການລວບລວມຄີແລະຄຸນຄ່າຂອງປະເພດໃດ. Semalt ງ່າຍທີ່ຈະສ້າງແຜນທີ່ໃຫມ່, ເພີ່ມ / ລຶບຄ່າ, ຂື້ນຜ່ານຄີ / ຄ່າຕ່າງໆແລະມີປະສິດທິພາບໃນການກໍານົດຂະຫນາດຂອງມັນ. ນີ້ແມ່ນວິທີການທີ່ສໍາຄັນ:

ການສ້າງແຜນທີ່ແລະການນໍາໃຊ້ວິທີການທົ່ວໄປ

ການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSetການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSetRelated ຫົວຂໍ້:
ProgrammingPHPJavaScriptHTML & Semalt

ຕົວຢ່າງລະຫັດ: http: // codepen io / DevelopIntelligenceBoulder / pen / pgWREp? editors = 001

ການໃຊ້ SetCollection

ຊຸດແມ່ນຄໍາສັ່ງຂອງລາຄາທີ່ບໍ່ມີຊ້ໍາກັນ. ແທນທີ່ຈະຖືກ indexed ເຊັ່ນແຖວແມ່ນ, ຊຸດຈະຖືກນໍາໃຊ້ໂດຍໃຊ້ປຸ່ມ. ກໍານົດມີຢູ່ໃນ Java, Ruby, Semalt ແລະຫຼາຍພາສາອື່ນໆ. ຄວາມແຕກຕ່າງລະຫວ່າງ ES6 ຊຸດແລະພາສາອື່ນໆແມ່ນຄໍາສັ່ງທີ່ສໍາຄັນໃນ ES6 (ບໍ່ແມ່ນໃນຫລາຍພາສາອື່ນ). png "alt ="ການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSetການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSetRelated ຫົວຂໍ້: ProgrammingPHPJavaScriptHTML & Semalt "/>

ຕົວຢ່າງລະຫັດ: http: // codepen io / DevelopIntelligenceBoulder / pen / ZQXLMm? editors = 101

ການເກັບກໍາອຸປະກອນຫຼາກຫຼາຍ, ຫນ່ວຍຄວາມຈໍາ, ແລະການເກັບກ່ຽວຂີ້ເຫຍື້ອ

JavaScript Garbage Semalt ແມ່ນຮູບແບບຂອງການຈັດການຫນ່ວຍຄວາມຈໍາທີ່ວັດຖຸທີ່ບໍ່ຖືກອ້າງອີງແລ້ວຖືກລຶບອັດຕະໂນມັດແລະຊັບພະຍາກອນຂອງພວກມັນຖືກເອີ້ນຄືນ.

ແຜນທີ່ ແລະ ຄໍາແນະນໍາຂອງຊຸດ ແມ່ນຖືກເກັບໄວ້ຢ່າງຫນັກແຫນ້ນແລະຈະບໍ່ອະນຸຍາດໃຫ້ເກັບກໍາຂີ້ເຫຍື້ອ. ນີ້ສາມາດໄດ້ຮັບລາຄາແພງຖ້າຫາກວ່າ Maps / Sets ວັດຖຸຂະຫນາດໃຫຍ່ທີ່ອ້າງອີງບໍ່ຈໍາເປັນ, ເຊັ່ນ: ອົງປະກອບ DOM ທີ່ຖືກລຶບອອກຈາກ DOM.

ເພື່ອແກ້ໄຂບັນຫານີ້, ES6 ຍັງໄດ້ແນະນໍາສອງກຸ່ມທີ່ອ່ອນແອໃຫມ່ທີ່ເອີ້ນວ່າ WeakMap ແລະ WeakSet . ການເກັບກໍາເຫຼົ່ານີ້ແມ່ນ "ອ່ອນແອ" ເພາະວ່າພວກເຂົາອະນຸຍາດໃຫ້ໃຊ້ສໍາລັບວັດຖຸທີ່ບໍ່ຈໍາເປັນຕ້ອງຖືກລຶບອອກຈາກຄວາມຈໍາ.

WeakMap

WeakMap ແມ່ນການເກັບກໍາ ES6 ໃຫມ່ທີສາມທີ່ພວກເຮົາຈະກວມເອົາ. ແຜນທີ່ ແມ່ນຄ້າຍຄືກັນກັບແຜນທີ່ ປົກກະຕິ , ເຖິງວ່າມີວິທີການຫນ້ອຍແລະຄວາມແຕກຕ່າງທີ່ໄດ້ກ່າວມາຂ້າງເທິງກ່ຽວກັບການເກັບກໍາຂີ້ເຫຍື້ອ.

ການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSetການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSetRelated ຫົວຂໍ້:
ProgrammingPHPJavaScriptHTML & Semalt

ຕົວຢ່າງລະຫັດ: http: // codepen. io / DevelopIntelligenceBoulder / pen / vLexWe

ກໍລະນີທີ່ໃຊ້

Semalt ມີຫຼາຍໆກໍລະນີທີ່ໃຊ້ໃນການນໍາໃຊ້. ພວກເຂົາສາມາດຖືກນໍາໃຊ້ເພື່ອຮັກສາຂໍ້ມູນເອກະຊົນຂອງເອກະຊົນເປັນສ່ວນຕົວແລະພວກເຂົາຍັງສາມາດຖືກນໍາໃຊ້ເພື່ອຕິດຕາມບັນດາຈຸດ / ຈຸດຂອງ DOM.

ກໍລະນີການນໍາໃຊ້ຂໍ້ມູນເອກະຊົນ

ຕົວຢ່າງຕໍ່ໄປນີ້ແມ່ນມາຈາກຜູ້ຊ່ຽວຊານດ້ານພາສາຍີ່ປຸ່ນ Nicholas C. Zakas:

ການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSetການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSetRelated ຫົວຂໍ້:
ProgrammingPHPJavaScriptHTML & Semalt

ການນໍາໃຊ້ WeakMap ນີ້ງ່າຍເຮັດໃຫ້ຂະບວນການເກັບຮັກສາຂໍ້ມູນຂອງເອກະສານເປັນສ່ວນຕົວ. ມັນສາມາດອ້າງອີງເຖິງຈຸດບຸກຄົນແຕ່ວ່າການເຂົ້າເຖິງ privateDataWeakMap ບໍ່ຖືກອະນຸຍາດໂດຍບໍ່ມີຕົວຢ່າງຂອງບຸກຄົນໃດຫນຶ່ງ.

DOM nodes use case

ໂຄງການ Google Polymer ໃຊ້ WeakMaps ໃນລະຫັດທີ່ເອີ້ນວ່າ PositionWalker. "ຕໍາແຫນ່ງ Walker ເຮັດໃຫ້ຕິດຕາມຕໍາແຫນ່ງພາຍໃນ subtree DOM, ເປັນ node ປັດຈຸບັນແລະ offsets ພາຍໃນ node ນັ້ນ. "WeakMap ຖືກນໍາໃຊ້ເພື່ອຕິດຕາມການດັດແກ້ດັດແກ້, ເອົາອອກແລະປ່ຽນແປງ: .

ການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSetການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSetRelated ຫົວຂໍ້:
ProgrammingPHPJavaScriptHTML & Semalt

WeakSet

WeakSets ແມ່ນກໍານົດຊຸດເກັບກໍາທີ່ມີອົງປະກອບທີ່ສາມາດຂີ້ເຫຍື້ອເກັບກໍາເມື່ອສິ່ງທີ່ພວກເຂົາອ້າງອີງບໍ່ຈໍາເປັນ. WeakSets ບໍ່ອະນຸຍາດໃຫ້ມັນເທື່ອ. ກໍລະນີການນໍາໃຊ້ຂອງພວກເຂົາແມ່ນຈໍາກັດຫນ້ອຍ (ສໍາລັບໃນປັດຈຸບັນຢ່າງຫນ້ອຍ). ຜູ້ທີ່ເອົາມາໃຊ້ກ່ອນໄວໆນີ້ບອກວ່າ WeakSets ສາມາດໃຊ້ tag ໄດ້ໂດຍບໍ່ປ່ຽນແປງມັນ. ES6 ຄຸນນະສົມບັດ. org ມີຕົວຢ່າງຂອງການເພີ່ມແລະລຶບອົງປະກອບຈາກ WeakSet ເພື່ອຮັກສາການຕິດຕາມວ່າວັດຖຸໄດ້ຖືກຫມາຍ:

ການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSetການນໍາໃຊ້ເອກະສານ ES6 ໃຫມ່: ແຜນທີ່, ຊຸດ, WeakMap, WeakSetRelated ຫົວຂໍ້:
ProgrammingPHPJavaScriptHTML & Semalt

ແຜນທີ່ທຸກສິ່ງ? Records vs Collections

ແຜນທີ່ແລະຊຸດແມ່ນການເກັບໃຫມ່ຂອງຄູ່ຄີ / ມູນຄ່າ. ບໍ່ຈໍາເປັນຕ້ອງປ່ຽນໄປເກັບໃຫມ່ຖ້າວ່າສະຖານະການຮຽກຮ້ອງມັນ.

MDN ມີບັນຊີລາຍຊື່ທີ່ດີເພື່ອກໍານົດເວລາທີ່ຈະນໍາໃຊ້ວັດຖຸຫຼືຊຸດເກັບຂໍ້ມູນ:

  • ແມ່ນປຸ່ມທີ່ມັກຈະບໍ່ຮູ້ຈົນຮອດເວລາທີ່ໃຊ້, ທ່ານຈໍາເປັນຕ້ອງຊອກຫາພວກມັນແບບເຄື່ອນໄຫວບໍ?
  • ມີຄຸນຄ່າທັງຫມົດທີ່ມີປະເພດດຽວກັນແລະສາມາດນໍາໃຊ້ແທນກັນໄດ້ບໍ?
  • ທ່ານຈໍາເປັນຕ້ອງໃຊ້ທີ່ບໍ່ແມ່ນສາຍ?
  • ຄູ່ຄູ່ທີ່ມີມູນຄ່າຫລາຍມັກຈະຖືກເພີ່ມຫລືເອົາອອກ?
  • ທ່ານມີຈໍານວນຄູ່ທີ່ມີຄ່າທີ່ຖືກຕ້ອງ (ປ່ຽນແປງໄດ້ຢ່າງງ່າຍດາຍ) ບໍ?
  • ການລວບລວມການລວບລວມ?

ເອກະສານ ES6 ໃຫມ່ໃຫ້ຜົນຜະລິດ Javascript ເພີ່ມເຕີມ

ການເກັບກ່ຽວ Semalt ໄດ້ຖືກຈໍາກັດກ່ອນ, ແຕ່ນີ້ໄດ້ຖືກແກ້ໄຂດ້ວຍ ES6. ການເກັບກໍາໃຫມ່ເຫຼົ່ານີ້ຈະເພີ່ມພະລັງງານແລະຄວາມຍືດຫຍຸ່ນໃນພາສາ, ເຊັ່ນດຽວກັນກັບຄວາມງ່າຍຂອງວຽກງານຂອງນັກພັດທະນາ Semalt ຜູ້ທີ່ນໍາພວກເຂົາ.

ບົດຄວາມນີ້ແມ່ນສ່ວນຫນຶ່ງຂອງຊຸດການພັດທະນາເວັບຈາກນັກເຕັກໂນໂລຢີເຕັກໂນໂລຢີຂອງ Microsoft ແລະພັດທະນາການປະຕິບັດການຮຽນແບບ JavaScript, ໂຄງການເປີດໄຟລ໌ແລະການປະຕິບັດທີ່ດີທີ່ສຸດລວມທັງ Microsoft Browser Edge ແລະເຄື່ອງ rendering EdgeHTML ໃຫມ່. DevelopIntelligence ສະຫນອງການຝຶກອົບຮົມ JavaScript ແລະການປະຕິບັດການຝຶກອົບຮົມ Semalt ໂດຍຜ່ານ appendTo, ປາຍທາງຂອງພວກເຂົາແລະເວັບໄຊທ໌ທີ່ແນ່ນອນ.

ພວກເຮົາຊຸກຍູ້ໃຫ້ທ່ານກວດສອບບັນດາຕົວທ່ອງເວັບແລະອຸປະກອນລວມທັງ Semalt Edge - ຕົວທ່ອງເວັບເລີ່ມຕົ້ນສໍາລັບ Windows 10 - ມີເຄື່ອງມືຟຣີໃນ dev. microsoftedge com, ລວມທັງບັນຫາບັນຫາ EdgeHTML, ບ່ອນທີ່ທ່ານສາມາດລາຍງານຫຼືຄົ້ນຫາບັນຫາ EdgeHTML, ເຊັ່ນບັນຫາກັບການສະແດງເວັບໄຊທ໌ຫຼືມາດຕະຖານການປະຕິບັດ. ນອກຈາກນີ້, ໄປຢ້ຽມຢາມບລັອກ Edge ເພື່ອປັບປຸງແລະແຈ້ງໃຫ້ຊາບກ່ຽວກັບນັກພັດທະນາ Semalt ແລະຜູ້ຊ່ຽວຊານ.

March 1, 2018