Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. Прокси
  6. Proxy()
  7. handler.set()

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

handler.set()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨сентябрь 2016 г.⁩.

Методhandler.set() является ловушкой для установки значения свойству.

Синтаксис

js
var p = new Proxy(target, {  set: function (target, property, value, receiver) {},});

Параметры

Следующие параметры передаются методуset() .this привязан к обработчику

target

Исходный объект, который проксируется.

property

Имя свойства, в которое устанавливается значениеvalue.

value

Значение, устанавливаемое в свойствоproperty.

receiver

Объект, которому первоначально было присвоено задание. Обычно это сам прокси. Но обработчикset() также может быть вызван косвенно, через цепочку прототипов или различными другими способами.Например, предположим, что скрипт выполняетobj.name = "jen", при этомobj не является прокси и не имеет собственного свойства.name, но имеет прокси в цепочке прототипов. Будет вызван обработчик проксиset() , аobj будет передан в качестве получателя.

Возвращаемые результаты

Методset должен возвращать boolean значение.

  • Возвращаетtrue, если присвоение выполнено успешно.
  • Если методset() возвращаетfalse, а присваивание произошло в коде строгого режима, то будет выброшенаTypeError.

Описание

Методhandler.set является ловушкой для установки значения свойству.

Перехват

Эта ловушка может перехватывать следующие операции:

  • Установка значения свойству:proxy[foo] = bar andproxy.foo = bar
  • Установка значения наследованному свойству:Object.create(proxy)[foo] = bar
  • Reflect.set()

Инварианты

Если нарушены следующие инварианты, то proxy выброситTypeError:

  • Невозможно изменить значение свойства так, чтобы оно отличалось от значения соответствующего свойства целевого объекта, если соответствующее свойство целевого объекта не является доступным для записи и не настраиваемым свойством данных.
  • Невозможно установить значение свойства, если соответствующее свойство целевого объекта является неконфигурируемым свойством средства доступа, для которого в качестве атрибута [[Set]] указано значение undefined.
  • В строгом режиме при возврате из обработчикаset() значенияfalse, будет выброшено исключениеTypeError.

Примеры

Следующий код перехватывает установку значения свойству.

js
var p = new Proxy(  {},  {    set: function (target, prop, value, receiver) {      target[prop] = value;      console.log("property set: " + prop + " = " + value);      return true;    },  },);console.log("a" in p); // falsep.a = 10; // "property set: a = 10"console.log("a" in p); // trueconsole.log(p.a); // 10

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp