Метод 4 - Его цель наиболее ясна.
Если вы можете что-то сделать со встроенной функцией, нет никакой причины сделать свой собственный (какой именно метод 1-3 действительно)