Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

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

Синтаксис

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

Параметры

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

target
Целевой обьект
property
Имя свойства для установки.
value
Новое значение свойства для установки.
receiver
Объект, которому первоначально было присвоено задание. Обычно это сам прокси. Но обработчик набора также может быть вызван косвенно, через цепочку прототипов или различными способами.
     Например, предположим, что сценарий выполняет obj.name = "jen", а obj не является прокси-сервером и не имеет собственного свойства .name, но имеет прокси-сервер в цепочке прототипов. Этот обработчик заданий прокси будет вызываться, а obj будет передан в качестве получателя.
 

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

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

Описание

The handler.set method is a trap for setting property value.

Interceptions

This trap can intercept these operations:

  • Property assignment: proxy[foo] = bar and proxy.foo = bar
  • Inherited property assignment: Object.create(proxy)[foo] = bar
  • Reflect.set()

Invariants

If the following invariants are violated, the proxy will throw a TypeError:

  • Cannot change the value of a property to be different from the value of the corresponding target object property if the corresponding target object property is a non-writable, non-configurable data property.
  • Cannot set the value of a property if the corresponding target object property is a non-configurable accessor property that has undefined as its [[Set]] attribute.
  • In strict mode, a false return value from the set handler will throw a TypeError exception.

Примеры

Следующие ловушки кода устанавливают значение свойства.

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

Specifications

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Определение '[[Set]]' в этой спецификации.
Стандарт Initial definition.
ECMAScript Latest Draft (ECMA-262)
Определение '[[Set]]' в этой спецификации.
Живой стандарт  

Browser compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 61 18 (18) ? ? 10.1
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support ? ? 18.0 (18) ? ? ?

See also

Метки документа и участники

Метки: 
 Внесли вклад в эту страницу: Vilafox
 Обновлялась последний раз: Vilafox,