К обсуждениям

Safari Technology Preview 251: global getter падает при bare-вызове

Редакция VOne Технологии

Safari Technology Preview 251: сохранённый getter или setter глобального атрибута вызывается как отдельная функция и неожиданно выбрасывает исключение. People-first проверка: матрица вызова «accessor → bare/Reflect.apply → receiver → exception/result»; синтетический стенд, опровержимый контроль, один обратимый шаг, stop-line и минимизированный handoff.

Ответ и граница: JavaScript

Начните не с переключения настроек, а с проверяемой границы. Запрос «как проверить bare-вызов getter или setter атрибута global object в Safari Technology Preview 251» относится только к ситуации: сохранённый getter или setter глобального атрибута вызывается как отдельная функция и неожиданно выбрасывает исключение. Условие успеха записывается до запуска: bare-ветка не падает только из-за отсутствия явного receiver, а контроль сохраняет ожидаемое значение. Внешне похожая ошибка сама по себе ничего не доказывает; отдельно проверяется ловушка «ошибка пользовательского accessor или transpiler, ошибочно принятая за поведение встроенного global object». Похожий внешний эффект не равен той же причине: feature detection, версия и неизменяемые условия фиксируются заранее; отсутствие API означает unsupported, а отсутствие наблюдения — unknown. Производственный сайт, реальный аккаунт и пользовательские данные исключены.

Что подтверждают Release 251 и 318748@main

Официальные WebKit Release Notes датированы 26 августа 2026 года и для Safari Technology Preview 251 сообщают: исправлены getter и setter атрибутов global object, которые выбрасывали исключение при bare-вызове из global scope. Строка релиза ведёт к первичной записи 318748@main; её commit title и доступность перепроверены 29 августа. Пара official/primary подтверждает change item, но не частоту жалоб, спрос, stable-релиз или причинность на чужой странице. Community discussion остаётся только lead к дате. Технический предел статьи совпадает с формулировкой 318748@main и не расширяется поисковым заголовком.

Стенд и рабочий артефакт 318748

Стенд: чистый same-origin iframe, два доступных дескриптора глобальных атрибутов и журнал только формы вызова. До воздействия без интерпретации запишите: имя свойства, вид accessor, форма вызова, exception.name, exception.message, значение receiver и тип результата. Рабочий артефакт — матрица вызова «accessor → bare/Reflect.apply → receiver → exception/result». В таблице оставляют expected/observed, единицу, build и timestamp. IP, cookie, токены, Authorization, реальные query, пути и пользовательские файлы запрещены; недоступное поле остаётся пустым с причиной. Наблюдение не интерпретируется до прохождения control и финального cleanup.

Контроль, который может опровергнуть гипотезу

Контроль готовят до canary, иначе он превращается в объяснение задним числом. Для этой боли используется: тот же accessor через Reflect.apply с явным globalThis и обычное чтение свойства. Он проходит тот же порядок запуска, settle-событие и набор полей, что основная ветка. Риск «ошибка пользовательского accessor или transpiler, ошибочно принятая за поведение встроенного global object» получает отдельный признак. Обе ветки получают одинаковый порядок запуска и сбор. Если отклоняется control, итог invalid; если control недоступен, environment-blocked — выбирать удобную интерпретацию нельзя. Такой дизайн делает тезис опровержимым и не требует доступа к исходным данным пользователя.

Одно обратимое воздействие

Разрешён один шаг: вызвать один заранее выбранный accessor как отдельную функцию, затем вернуть ссылку и повторить baseline. Сначала снимите baseline, затем выполните только указанную операцию, дождитесь заранее выбранного события завершения и повторите поля «имя свойства, вид accessor, форма вызова, exception.name, exception.message, значение receiver и тип результата». Снимите baseline, выполните одну операцию, дождитесь settle и повторите те же измерения. После полного возврата baseline обязан восстановиться, иначе даже привлекательный canary получает invalid. PASS допустим, когда bare-ветка не падает только из-за отсутствия явного receiver, а контроль сохраняет ожидаемое значение. Результат не усиливают словами о массовости; production, VPN, маршрутизация, чужие сайты и реальные media остаются вне опыта.

Stop-line, решение и минимальный handoff

В отчёт попадает не впечатление, а заранее определённый критерий PASS. Остановитесь, если дескриптор заменён polyfill, iframe не fully active или getter имеет собственный побочный эффект. Финальная запись хранит матрица вызова «accessor → bare/Reflect.apply → receiver → exception/result», результат контроля, отметку rollback и ссылку на 318748@main. Допустимые итоги: reproduced, not reproduced, unsupported, environment-blocked, invalid и unknown; каждый относится только к этому fixture. Для handoff достаточно fixture, build, expected/actual, контрольной ветки, rollback и primary link; перед передачей удаляются пути и идентификаторы. PASS означает только условие «bare-ветка не падает только из-за отсутствия явного receiver, а контроль сохраняет ожидаемое значение». Материал не обещает индексацию, позиции, поисковый спрос, stable-поддержку или автоматическое исправление.

Материал подготовлен редакцией VOne с помощью ИИ; дата, WebKit Release 251, primary commit 318748@main, техническая граница, независимый контроль, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.