WeakRef - ECMAScript рдорд╛рдирдХ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡

рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдирд▓ рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рд╕реА рдкреЛрд╕реНрдЯ рд▓рд┐рдЦреАред рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рд╣реЛрдм рдХреЗ рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рд░реБрдЪрд┐ рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╡реА 8 рдмреНрд▓реЙрдЧ рдкрд░ рдПрдХ рд▓реЗрдЦ рдЬреЛ рдирдП WeakRef (рд╕реНрдЯреЗрдЬ 3) рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ - "рдХрдордЬреЛрд░ рд╕рдВрджрд░реНрдн рдФрд░ рдлрд╛рдЗрдирд▓"ред


рдореИрдВ рдЕрдкрдиреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрди рдкрд░ рдПрдХ рд╡реЙрдЯрд░рдорд╛рд░реНрдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдирд╣реАрдВ рд╣реИ), рдФрд░ рдлрд┐рд░ рдЗрди рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдХрд┐рд╕реА рддрд░рд╣ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЙрдЯрд░рдорд╛рд░реНрдХ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕реБрдкрд░рдЗрдореНрдкреЛрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕реАрдкреАрдпреВ рдХреЛ рддреАрд╡реНрд░рддрд╛ рд╕реЗ рдЦрдкрдд рдХрд░рддрд╛ рд╣реИред рдЫрд╡рд┐рдпрд╛рдВ рджреЛрд╣рд░рд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо Map рдореЗрдВ рд╡реЙрдЯрд░рдорд╛рд░реНрдХ рдХреЗ рд╕рд╛рде рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдХреИрд╢ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдХреБрдВрдЬреА рд╣реЛрдиреЗ рджреЗрдВред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдпрджрд┐ рдХреБрдЫ рдЫрд╡рд┐ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреА, рдпрд╣ рдЕрднреА рднреА рдореЗрдореЛрд░реА рдореЗрдВ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ Map рдЗрд╕рдХреА рдХреБрдВрдЬреА рд╣реЛрдЧреА (рдордЬрдмреВрдд рд╕рдВрджрд░реНрдн)ред рдЗрд╕рд▓рд┐рдП, рддрд╛рдХрд┐ рд╣рдорд╛рд░рд╛ Map рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реА рди рдЦрд╛рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рддрд░рд╣ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдХреИрд╢ рдХреЛ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред


рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ WeakRef рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред WeakRef рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдПрдХ рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЫрд╡рд┐ рдХреЗ рдмрдЬрд╛рдп рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рд╣реИрдВ:


 const wr = new WeakRef(image); cache.set(name, wr); //    const ref = cache.get(name); const image = ref.deref(); 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдЬрдм рдХреИрд╢ рдореЗрдВ рдЫрд╡рд┐ рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВред рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд╛рдЗрдирд▓реАрдЬреЗрд╢рди рдЧреНрд░реБрдк рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИред


рдПрдХ рд░реЛрдЪрдХ рддрдереНрдпред рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдирдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ WeakMap рдФрд░ WeakSet рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрд╡рд▓реЛрдХрди рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╡реАрдХрдкрд╛рдЗрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд░рд┐рд╢реНрддреЗ рдХрд╛ рд╕рдмрд╕реЗ рдФрдкрдЪрд╛рд░рд┐рдХ рдирд╛рдо рдПрдкреЗрдорд░реЙрди рд╣реИред


https://v8.dev/features/weak-references

Source: https://habr.com/ru/post/hi460297/


All Articles