diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:52 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:52 -0500 |
commit | 074785cea106179cb3305637055ab0a009ca74f2 (patch) | |
tree | e6ae371cccd642aa2b67f39752a2cdf1fd4eb040 /files/ru/web/javascript/reference/global_objects/array/observe/index.html | |
parent | da78a9e329e272dedb2400b79a3bdeebff387d47 (diff) | |
download | translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.gz translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.bz2 translated-content-074785cea106179cb3305637055ab0a009ca74f2.zip |
initial commit
Diffstat (limited to 'files/ru/web/javascript/reference/global_objects/array/observe/index.html')
-rw-r--r-- | files/ru/web/javascript/reference/global_objects/array/observe/index.html | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/files/ru/web/javascript/reference/global_objects/array/observe/index.html b/files/ru/web/javascript/reference/global_objects/array/observe/index.html new file mode 100644 index 0000000000..f8d7d9cd07 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/observe/index.html @@ -0,0 +1,138 @@ +--- +title: Array.observe() +slug: Web/JavaScript/Reference/Global_Objects/Array/observe +tags: + - Array + - ECMAScript7 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Reference + - Référence(2) +translation_of: Archive/Web/JavaScript/Array.observe +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Array.observe()</code></strong> используется для асинхронного обзора изменений в массивах, подобно тому, как метод {{jsxref("Object.observe()")}} используется для тех же целей для объектов. Он предоставляет поток изменений в порядке их возникновения.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Array.observe(<var>arr</var>, <var>callback</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>arr</code></dt> + <dd>Обозреваемый массив.</dd> + <dt><code>callback</code></dt> + <dd>Функция, вызываемая на каждое сделанное изменение со следующими аргументами: + <dl> + <dt><code>changes</code></dt> + <dd>Массив объектов, каждый из которых представляет одно изменение. Эти объекты обладают следующими свойствами: + <ul> + <li><strong><code>name</code></strong>: название изменённого свойства.</li> + <li><strong><code>object</code></strong>: изменённый массив, после применения этого изменения.</li> + <li><strong><code>type</code></strong>: строка, указывающая тип произошедшего изменения. Может быть одной из <code>"add"</code>, <code>"update"</code>, <code>"delete"</code> или <code>"splice"</code>.</li> + <li><strong><code>oldValue</code></strong>: только для типов <code>"update"</code> и <code>"delete"</code>. Значение до изменения.</li> + <li><strong><code>index</code></strong>: только для типа <code>"splice"</code>. Индекс, по которому произошло изменение.</li> + <li><strong><code>removed</code></strong>: только для типа <code>"splice"</code>. Массив с удалёнными элементами.</li> + <li><strong><code>addedCount</code></strong>: только для типа <code>"splice"</code>. Количество добавленных элементов.</li> + </ul> + </dd> + </dl> + </dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Функция <code>callback</code> вызывается каждый раз, когда с массивом <code>arr</code> происходят какие-либо изменения. Параметром в неё передаётся массив со всеми произошедшими изменениями в порядке их возникновения.</p> + +<div class="note"> +<p>Изменения через методы объекта {{jsxref("Array")}}, например, посредством метода {{jsxref("Array.prototype.pop()")}}, будут зарегистрированы как изменения типа <code>"splice"</code>. Присваивание по индексу, в результате которого размер массива не изменится, может быть зарегистрировано, как изменение типа <code>"update"</code>.</p> +</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Logging_all_three_different_types" name="Example:_Logging_all_three_different_types">Пример: журналирование всех трёх типов событий</h3> + +<pre class="brush: js">var arr = ['a', 'b', 'c']; + +Array.observe(arr, function(changes) { + console.log(changes); +}); + +arr[1] = 'B'; +// [{type: 'update', object: <arr>, name: '1', oldValue: 'b'}] + +arr[3] = 'd'; +// [{type: 'splice', object: <arr>, index: 3, removed: [], addedCount: 1}] + +arr.splice(1, 2, 'beta', 'gamma', 'delta'); +// [{type: 'splice', object: <arr>, index: 1, removed: ['B', 'c', 'd'], addedCount: 3}] +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<p><a href="https://github.com/arv/ecmascript-object-observe">Черновое предложение к обсуждению для ECMAScript 7</a>.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("36")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.unobserve()")}} {{experimental_inline}}</li> + <li>{{jsxref("Object.observe()")}} {{experimental_inline}}</li> +</ul> |