Полно
Наверное ты думаешь что значение поля изменилось потому что этот console.log выводит значение "female" в консоль. На самом деле значение свойства gender не именилась. В консоли ты увидел результат вычисления выражения person.gender = 'female'. Чтобы проверить изменилось ли значение свойства, надо еще раз залогировать person.gender, и ты увидишь что оно не изменилось.
Все равно остается открытым вопрос в том как браузер позволяет коду, который по определению (запись значения в свойство, в которое запись запрещена) не должен выполняться. В нестрогом режиме браузер игнорирует результаты этой операции, но продолжает выполнять код без ошибок. А в строгом режиме подобный код упадет с ошибкой. Ниже пример кода где тот же код падает в строгом режиме.
Еще вопрос, а если я запрещу любые действия по изменению объекта, скажем методом .freeze() я уже никак на странице не смогу отменить его заморозку и изменять его свойства? Если не смогу, то можно ведь скопировать объект каким-то образом и работать уже с его копией?