Стрелочные функции и утечки памяти
Как известно, функции вида ()=>{} при своём объявлении биндятся на текущий внешний this. В некоторых ситуациях это действительно удобно.
Но, получается, что такие функции создают постоянную угрозу утечек памяти, т.к. по сути всегда являются замыканиями. Кто-нибудь уже копал этот вопрос? Я просто хочу разобраться, какие паттерны следует использовать, а какие - нет. Насколько я сейчас понимаю, стрелочные функции вообще никогда не должны присваиваться, т.к. они неизбежно тянут за собой замыкание с, возможно, ненужным содержимым. Исключением являются, разве что, колбеки в функциях setTimeout, onload и т.д. Например: var min, max; var app = { init: function() { min = (x, y) => y < x ? y : x; max = (x, y) => y > x ? y : x; } }; app.init(); app = undefined; // по идее, даже не смотря на отсутствие в стрелочных функциях обращения к this, // перезаписанный объект app всё равно существует в их замыканиях, хотя нам это не нужно. |
Часовой пояс GMT +3, время: 04:02. |