Пояснение
Запустив obj1.func();, в глобальную let-переменную showX записалась ссылка на функцию, причём стрелочную. А любая стрелочная функция навсегда сохраняет в this то значение, которому было равно this в лексическом окружении, в котором функция была создана. Даже "скопировав" стрелочную функцию в другую переменную, this будет тот же, что при создании.
Для нашей стрелочной функции значением this всегда будет объект obj1, даже если её вызывать на другом объекте.