diff options
Diffstat (limited to 'files/ru/web/javascript/reference/operators/instanceof')
-rw-r--r-- | files/ru/web/javascript/reference/operators/instanceof/index.html | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/files/ru/web/javascript/reference/operators/instanceof/index.html b/files/ru/web/javascript/reference/operators/instanceof/index.html index 81676c6bf5..dd264b0a07 100644 --- a/files/ru/web/javascript/reference/operators/instanceof/index.html +++ b/files/ru/web/javascript/reference/operators/instanceof/index.html @@ -69,14 +69,14 @@ o3 instanceof C; // true, так как C.prototype теперь присутс <h3 id="instanceof_и_множественные_контексты_(например_фреймы_или_окна)"><code>instanceof</code> и множественные контексты (например, фреймы или окна)</h3> -<p>Различные контексты имеют разные среды выполнения. Это означает, что они имеют различныые built-ins (разный глобальный объект, различные конструкторы и т.д.). Это может давать неожиданные результаты. Например, <code>[] instanceof window.frames[0].Array</code> вернёт <code>false</code>, потому что <code>Array.prototype !== </code><code>window.frames[0].Array</code> а массив наследуется от <code>Array</code>.</p> +<p>Различные контексты имеют разные среды выполнения. Это означает, что они имеют различные built-ins (разный глобальный объект, различные конструкторы и т.д.). Это может давать неожиданные результаты. Например, <code>[] instanceof window.frames[0].Array</code> вернёт <code>false</code>, потому что <code>Array.prototype !== </code><code>window.frames[0].Array</code> а массив наследуется от <code>Array</code>.</p> <p>Это может казаться несущественной проблемой сначала, но при работе с несколькими фреймами или окнами, и передачи объектов из одного контекста в другой с помощью функций, это может стать серьёзной проблемой. С другой стороны, безопасно проверить, является ли некоторый объект массивом можно используя <code>Array.isArray(myObj)</code>.</p> <p>Например, для проверки того, что <a href="/ru/docs/Web/API/Node">Node</a> является <a href="/ru/docs/Web/API/SVGElement">SVGElement</a> в разных контекстах можно использовать <code>myNode instanceof myNode.ownerDocument.defaultView.SVGElement</code>.</p> <div class="note"><strong>Замечания для разработчиков Mozilla:</strong><br> -Использование XPCOM <code>instanceof</code> в коде имеет специальный эффект: <code>obj instanceof </code><em><code>xpcomInterface</code></em> (например <code>Components.interfaces.nsIFile</code>) вызывает <code>obj.QueryInterface(<em>xpcomInterface</em>)</code> и возвращает <code>true</code> если проверка на QueryInterface прошла успешно. Побочным эфектом этого вызова является то, что можно использовать свойства <em><code>xpcomInterface</code></em> на <code>obj</code> после успешной проверки с помощью <code>instanceof</code>. В отличии от стандартных глобальных JavaScript типов, проверка <code>obj instanceof xpcomInterface</code> работает как ожидается, даже если <code>obj</code> отнсится к другому контексту.</div> +Использование XPCOM <code>instanceof</code> в коде имеет специальный эффект: <code>obj instanceof </code><em><code>xpcomInterface</code></em> (например <code>Components.interfaces.nsIFile</code>) вызывает <code>obj.QueryInterface(<em>xpcomInterface</em>)</code> и возвращает <code>true</code> если проверка на QueryInterface прошла успешно. Побочным эффектом этого вызова является то, что можно использовать свойства <em><code>xpcomInterface</code></em> на <code>obj</code> после успешной проверки с помощью <code>instanceof</code>. В отличии от стандартных глобальных JavaScript типов, проверка <code>obj instanceof xpcomInterface</code> работает как ожидается, даже если <code>obj</code> относится к другому контексту.</div> <h2 id="Примеры">Примеры</h2> |