pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set

r.mozilla.org/favicon.ico" />

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

View in English Always 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 and proxy.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); // false

p.a = 10; // "property set: a = 10"
console.log("a" in p); // true
console.log(p.a); // 10

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

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

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

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

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy