aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/javascript/reference/classes/index.html
diff options
context:
space:
mode:
authorAlexey Pyltsyn <lex61rus@gmail.com>2021-10-27 02:31:24 +0300
committerGitHub <noreply@github.com>2021-10-27 02:31:24 +0300
commit980fe00a74a9ad013b945755415ace2e5429c3c2 (patch)
treea1c6bb4b302e69bfa53eab13e44500eba55d1696 /files/ru/web/javascript/reference/classes/index.html
parent374a039b97a11ee7306539d16aaab27fed66b398 (diff)
downloadtranslated-content-980fe00a74a9ad013b945755415ace2e5429c3c2.tar.gz
translated-content-980fe00a74a9ad013b945755415ace2e5429c3c2.tar.bz2
translated-content-980fe00a74a9ad013b945755415ace2e5429c3c2.zip
[RU] Remove notranslate (#2874)
Diffstat (limited to 'files/ru/web/javascript/reference/classes/index.html')
-rw-r--r--files/ru/web/javascript/reference/classes/index.html36
1 files changed, 18 insertions, 18 deletions
diff --git a/files/ru/web/javascript/reference/classes/index.html b/files/ru/web/javascript/reference/classes/index.html
index f8a63e92b2..742cd341ca 100644
--- a/files/ru/web/javascript/reference/classes/index.html
+++ b/files/ru/web/javascript/reference/classes/index.html
@@ -22,7 +22,7 @@ translation_of: Web/JavaScript/Reference/Classes
<p>Первый способ определения класса — <strong>class declaration (</strong><em>объявление класса</em><strong>)</strong>. Для этого необходимо воспользоваться ключевым словом <code>class</code> и указать имя класса (в примере — «Rectangle»).</p>
-<pre class="brush: js notranslate"><code>class Rectangle {
+<pre class="brush: js"><code>class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
@@ -33,7 +33,7 @@ translation_of: Web/JavaScript/Reference/Classes
<p>Разница между <em>объявлением функции</em> (<em>function declaration</em>) и <em>объявлением класса</em> (<em>class declaration</em>) в том, что <em>объявление функции</em> совершает подъём ({{Glossary("Hoisting", "hoisting")}}), в то время как <em>объявление класса</em> — нет. Поэтому вначале необходимо объявить ваш класс и только затем работать с ним, а код же вроде следующего сгенерирует исключение типа {{jsxref("ReferenceError")}}:</p>
-<pre class="brush: js notranslate"><code>var p = new Rectangle(); // ReferenceError
+<pre class="brush: js"><code>var p = new Rectangle(); // ReferenceError
class Rectangle {}</code></pre>
@@ -41,7 +41,7 @@ class Rectangle {}</code></pre>
<p>Второй способ определения класса — <strong>class expression (</strong><em>выражение класса</em><strong>)</strong>. Можно создавать именованные и безымянные выражения. В первом случае имя выражения класса находится в локальной области видимости класса и может быть получено через свойства самого класса, а не его экземпляра.</p>
-<pre class="brush: js notranslate"><code>// безымянный
+<pre class="brush: js"><code>// безымянный
var Rectangle = class {
constructor(height, width) {
this.height = height;
@@ -84,7 +84,7 @@ console.log(Rectangle.name);
<p>Смотрите также <a href="/ru/docs/Web/JavaScript/Reference/Functions/%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8%D0%BD%D0%B8%D0%B5_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%B2">определение методов</a>.</p>
-<pre class="brush: js notranslate"><code>class Rectangle {
+<pre class="brush: js"><code>class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
@@ -107,7 +107,7 @@ console.log(square.area); // 100</code></pre>
<p>Ключевое слово <code><a href="/en-US/docs/Web/JavaScript/Reference/Classes/static">static</a></code>, определяет статический метод или свойства для класса. Статические методы и свойства вызываются без <a href="/ru/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript#The_Object_.28Class_Instance.29">инстанцирования</a> их класса, и <strong>не могут</strong> быть вызваны у экземпляров (<em>instance</em>) класса. Статические методы, часто используются для создания служебных функций для приложения, в то время как статические свойства полезны для кеширования в рамках класса, фиксированной конфигурации или любых других целей, не связанных с реплецированием данных между экземплярами.</p>
-<pre class="brush: js notranslate"><code>class Point {
+<pre class="brush: js"><code>class Point {
constructor(x, y) {
this.x = x;
this.y = y;
@@ -136,7 +136,7 @@ console.log(Point.distance(p1, p2)); // 7.0710678118654755</code></pre>
<p>Когда статический или прототипный метод вызывается без привязки к <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">this</span></font> объекта (или когда <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">this</span></font> является типом boolean, string, number, undefined, null), тогда <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">this</span></font> будет иметь значение <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">undefined</span></font> внутри вызываемой функции. Автоупаковка не будет произведена. Поведение будет таким же как если бы мы писали код в нестрогом режиме.</p>
-<pre class="brush: js notranslate"><code>class Animal {
+<pre class="brush: js"><code>class Animal {
speak() {
return this;
}
@@ -156,7 +156,7 @@ eat(); // undefined</code></pre>
<p>Если мы напишем этот же код используя классы основанные на функциях, тогда произойдёт автоупаковка основанная на значении <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">this</span></font>, в течение которого функция была вызвана. В строгом режиме автоупаковка не произойдёт - значение <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">this</span></font> останется прежним.</p>
-<pre class="brush: js notranslate"><code>function Animal() { }
+<pre class="brush: js"><code>function Animal() { }
Animal.prototype.speak = function(){
return this;
@@ -178,7 +178,7 @@ eat(); // глобальный объект (нестрогий режим)</cod
<p>Свойства экземпляра должны быть определены в методе класса:</p>
-<pre class="notranslate">class Rectangle {
+<pre>class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
@@ -187,7 +187,7 @@ eat(); // глобальный объект (нестрогий режим)</cod
<p>Статические (class-side) свойства и свойства прототипа должны быть определены за рамками тела класса:</p>
-<pre class="notranslate">Rectangle.staticWidth = 20;
+<pre>Rectangle.staticWidth = 20;
Rectangle.prototype.prototypeWidth = 25;
</pre>
@@ -201,7 +201,7 @@ Rectangle.prototype.prototypeWidth = 25;
<p>Используя Javascript синтаксис определения полей, приведённый выше пример может быть изменён следующим образом:</p>
-<pre class="notranslate">class Rectangle {
+<pre>class Rectangle {
height = 0;
width;
constructor(height, width) {
@@ -218,7 +218,7 @@ Rectangle.prototype.prototypeWidth = 25;
<p>Предыдущий пример может быть изменён следующим образом, используя приватные поля:</p>
-<pre class="notranslate">class Rectangle {
+<pre>class Rectangle {
#height = 0;
#width;
constructor(height, width) {
@@ -241,7 +241,7 @@ Rectangle.prototype.prototypeWidth = 25;
<p>Ключевое слово <code><a href="/en-US/docs/Web/JavaScript/Reference/Classes/extends">extends</a></code> используется в <em>объявлениях классов</em> и <em>выражениях классов</em> для создания класса, дочернего относительно другого класса.</p>
-<pre class="brush: js notranslate"><code class="language-js">class Animal {
+<pre class="brush: js"><code class="language-js">class Animal {
constructor(name) {
this.name = name;
}</code>
@@ -268,7 +268,7 @@ d.speak(); // Митци лает</code></pre>
<p>Аналогичным образом можно расширять традиционные, основанные на функциях "классы":</p>
-<pre class="brush: js line-numbers language-js notranslate"><code class="language-js">function Animal (name) {
+<pre class="brush: js line-numbers language-js"><code class="language-js">function Animal (name) {
this.name = name;
}
Animal.prototype.speak = function () {
@@ -288,7 +288,7 @@ d.speak(); // Митци лает
<p>Обратите внимание, что классы не могут расширять обычные (non-constructible) объекты. Если вам необходимо создать наследование от обычного объекта, в качестве замены можно использовать {{jsxref("Object.setPrototypeOf()")}}:</p>
-<pre class="brush: js line-numbers language-js notranslate"><code class="language-js">var Animal = {
+<pre class="brush: js line-numbers language-js"><code class="language-js">var Animal = {
speak() {
console.log(</code>`${this.name} издаёт звук.`<code class="language-js">);
}
@@ -312,7 +312,7 @@ d.speak(); // Митци издаёт звук.</code></pre>
<p>Например, при использовании таких методов, как {{jsxref("Array.map", "map()")}}, который возвращает конструктор по умолчанию, вам хотелось бы, чтобы они возвращали родительский объект <code>Array</code> вместо объекта <code>MyArray</code>. Символ {{jsxref("Symbol.species")}} позволяет это реализовать:</p>
-<pre class="brush: js line-numbers language-js notranslate"><code class="language-js">class MyArray extends Array {
+<pre class="brush: js line-numbers language-js"><code class="language-js">class MyArray extends Array {
// Изменить species на родительский конструктор Array
static get [Symbol.species]() { return Array; }
}
@@ -326,7 +326,7 @@ console.log(mapped instanceof Array); // true</code></pre>
<p>Ключевое слово <code><a href="/ru/docs/Web/JavaScript/Reference/Operators/super">super</a></code> используется для вызова функций на родителе объекта.</p>
-<pre class="brush: js language-js notranslate"><code class="language-js">class Cat {
+<pre class="brush: js language-js"><code class="language-js">class Cat {
constructor(name) {
this.name = name;
}
@@ -355,7 +355,7 @@ l.speak();
<p>Для реализации mix-ins в ECMAScript можно использовать функцию, которая в качестве аргумента принимает родительский класс, а возвращает подкласс, его расширяющий:</p>
-<pre class="brush: js line-numbers language-js notranslate"><code class="language-js">var calculatorMixin = Base =&gt; class extends Base {
+<pre class="brush: js line-numbers language-js"><code class="language-js">var calculatorMixin = Base =&gt; class extends Base {
calc() { }
};
@@ -365,7 +365,7 @@ var randomizerMixin = Base =&gt; class extends Base {
<p>Класс, использующий такие mix-ins, можно описать следующим образом:</p>
-<pre class="brush: js line-numbers language-js notranslate"><code class="language-js">class Foo { }
+<pre class="brush: js line-numbers language-js"><code class="language-js">class Foo { }
class Bar extends calculatorMixin(randomizerMixin(Foo)) { }</code></pre>
<h2 id="Спецификации">Спецификации</h2>