From 57e0abae4196d5e89486fa87171e12dd14f78584 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Thu, 18 Mar 2021 02:37:24 +0300 Subject: Fix various typos (#203) * Fix various typos * Auto fixes * Apply suggestions from code review Co-authored-by: Artem Shibakov * Apply suggestions from code review Co-authored-by: Artem Shibakov Co-authored-by: Artem Shibakov --- .../guide/details_of_the_object_model/index.html | 54 +++++++++++----------- files/ru/web/javascript/guide/functions/index.html | 2 +- .../guide/indexed_collections/index.html | 4 +- .../character_classes/index.html | 10 ++-- 4 files changed, 35 insertions(+), 35 deletions(-) (limited to 'files/ru/web/javascript/guide') diff --git a/files/ru/web/javascript/guide/details_of_the_object_model/index.html b/files/ru/web/javascript/guide/details_of_the_object_model/index.html index f61c174fc9..5a78bd6a74 100644 --- a/files/ru/web/javascript/guide/details_of_the_object_model/index.html +++ b/files/ru/web/javascript/guide/details_of_the_object_model/index.html @@ -30,7 +30,7 @@ translation_of: Web/JavaScript/Guide/Details_of_the_Object_Model

В языках, основанных на классах, вы создаете иерархию классов через объявление классов. В объявлении класса вы можете указать, что новый класс является подклассом уже существующего класса. При этом, подкласс унаследует все свойства суперкласса и в дополнение сможет добавить свои свойства или переопределить унаследованные. Например, предположим, что класс Employee включает два свойства: name и dept, а класс Manager является подклассом Employee и добавляет свойство reports. В этом случае, экземпляр класса Manager будет иметь три свойства: name, dept, и reports.

-

JavaScript реализует наследование, позволяя связать прототипный объект с любой функцией-конструктором. Итак, вы можете создать объект точь-в-точь, как в примере Employee — Manager, но используя несколько иную технику. Для начала нужно определить функцию-конструктор Employee, которая определяет свойства name и dept. Затем, определяем функцию-конструктор Manager, в которой в свою очередь, будет явно вызываться конструктор Employee и определяться новое свойство reports. Наконец, присваиваем новый экземпляр Employee, в качестве prototype для функции-конструктора Manager. Теперь, когда вы создадите нового Manager, он унаследует свойства name и dept из объекта Employee.

+

JavaScript реализует наследование, позволяя связать прототипный ообъект с любой функцией-конструктором. Итак, вы можете создать ообъект точь-в-точь, как в примере Employee — Manager, но используя несколько иную технику. Для начала нужно определить функцию-конструктор Employee, которая определяет свойства name и dept. Затем, определяем функцию-конструктор Manager, в которой в свою очередь, будет явно вызываться конструктор Employee и определяться новое свойство reports. Наконец, присваиваем новый экземпляр Employee, в качестве prototype для функции-конструктора Manager. Теперь, когда вы создадите нового Manager, он унаследует свойства name и dept из объекта Employee.

Добавление и удаление свойств

@@ -135,7 +135,7 @@ public class Employee { -

Определения классов Manager и WorkerBee показывают разницу в определении вышестоящего объекта в цепочке наследования. В JavaScript вводится связующий объект (прототипный экземпляр), который присваивается в качестве значения свойству prototype функции-конструктора. Вы можете сделать это в любое время после того, как вы создали конструктор. В Java, необходимо указать суперкласс внутри определения класса. Вы не можете изменить суперкласс вне определения класса.

+

Определения классов Manager и WorkerBee показывают разницу в определении вышестоящего объекта в цепочке наследования. В JavaScript вводится связующий ообъект (прототипный экземпляр), который присваивается в качестве значения свойству prototype функции-конструктора. Вы можете сделать это в любое время после того, как вы создали конструктор. В Java, необходимо указать суперкласс внутри определения класса. Вы не можете изменить суперкласс вне определения класса.

@@ -152,8 +152,8 @@ function Manager() { Employee.call(this); this.reports = []; } -//создаем пустой бъект с прототипом от коструктора Employee -//и используем этот объект как прототип для Manager +//создаем пустой объект с прототипом от конструктора Employee +//и используем этот ообъект как прототип для Manager Manager.prototype = Object.create(Employee.prototype); Manager.prototype.constructor = Manager; @@ -181,7 +181,7 @@ public class WorkerBee extends Employee {
-

Классы Engineer и SalesPerson создают объекты, которые происходят от WorkerBee и, следовательно, от Employee. Объект этих типов имеет свойства всех объектов, расположенных над ним в иерархии. Также, эти классы переопределяют наследуемое значение свойства dept своими значениями, характерными для этих объектов.

+

Классы Engineer и SalesPerson создают объекты, которые происходят от WorkerBee и, следовательно, от Employee. Ообъект этих типов имеет свойства всех объектов, расположенных над ним в иерархии. Также, эти классы переопределяют наследуемое значение свойства dept своими значениями, характерными для этих объектов.

@@ -247,14 +247,14 @@ public class Engineer extends WorkerBee {

Наследование свойств

-

Предположим, вы создаете объект mark в качестве WorkerBee (как показано на Рисунок 8.3) с помощью следующего выражения:

+

Предположим, вы создаете ообъект mark в качестве WorkerBee (как показано на Рисунок 8.3) с помощью следующего выражения:

var mark = new WorkerBee;
 
-

Когда JavaScript видит оператор new, он создает новый обобщенный объект и неявно устанавливает значение внутреннего свойства [[Prototype]] в WorkerkBee.prototype, затем передает этот новый объект в качестве значения this в функцию-конструктор WorkerBee. Внутреннее свойство [[Prototype]] определяет цепочку прототипов, используемых для получения значений свойств. После того, как эти свойства установлены, JavaScript возвращает новый объект, а оператор присваивания устанавливает переменную mark для этого объекта.

+

Когда JavaScript видит оператор new, он создает новый обобщенный ообъект и неявно устанавливает значение внутреннего свойства [[Prototype]] в WorkerkBee.prototype, затем передает этот новый ообъект в качестве значения this в функцию-конструктор WorkerBee. Внутреннее свойство [[Prototype]] определяет цепочку прототипов, используемых для получения значений свойств. После того, как эти свойства установлены, JavaScript возвращает новый ообъект, а оператор присваивания устанавливает переменную mark для этого объекта.

-

Этот процесс не задает значения свойств (локальных значений), которые унаследованы по цепочке прототипов, объекта mark напрямую. Когда вы запрашиваете значение свойства, JavaScript сначала проверяет, существует ли это значение в данном объекте. Если так и есть, тогда возвращается это значение. Если значение не найдено в самом объекте, JavaScript проверяет цепочку прототипов (используя внутреннее свойство [[Prorotype]]). Если объект в цепочке прототипов имеет значение для искомого свойства, это значение возвращается. Если такое свойство не найдено, JavaScript сообщает, что объект не обладает свойством. Таким образом, объект mark содержит следующие свойства и значения:

+

Этот процесс не задает значения свойств (локальных значений), которые унаследованы по цепочке прототипов, объекта mark напрямую. Когда вы запрашиваете значение свойства, JavaScript сначала проверяет, существует ли это значение в данном объекте. Если так и есть, тогда возвращается это значение. Если значение не найдено в самом объекте, JavaScript проверяет цепочку прототипов (используя внутреннее свойство [[Prorotype]]). Если ообъект в цепочке прототипов имеет значение для искомого свойства, это значение возвращается. Если такое свойство не найдено, JavaScript сообщает, что ообъект не обладает свойством. Таким образом, ообъект mark содержит следующие свойства и значения:

mark.name = '';
 mark.dept = 'general';
@@ -276,14 +276,14 @@ mark.projects = ['navigator'];
mark.bonus = 3000;
 
-

Теперь объект mark имеет свойство bonus, но никакой другой WorkerBee не имеет этого свойства.

+

Теперь ообъект mark имеет свойство bonus, но никакой другой WorkerBee не имеет этого свойства.

-

Если вы добавляете новое свойство в объект, который используется в качестве прототипа для функции-конструктора, вы добавляете это свойство для всех объектов, наследующих свойства из этого прототипа. Например, вы можете добавить свойство specialty для всех сотрудников с помощью следующего выражения:

+

Если вы добавляете новое свойство в ообъект, который используется в качестве прототипа для функции-конструктора, вы добавляете это свойство для всех объектов, наследующих свойства из этого прототипа. Например, вы можете добавить свойство specialty для всех сотрудников с помощью следующего выражения:

Employee.prototype.specialty = 'none';
 
-

Как только JavaScript выполняет это выражение, объект mark также получает свойство specialty со значением "none". Следующий рисунок показывает результат добавления этого свойства в прототип Employee и последующее переопределение его в прототипе Engineer.

+

Как только JavaScript выполняет это выражение, ообъект mark также получает свойство specialty со значением "none". Следующий рисунок показывает результат добавления этого свойства в прототип Employee и последующее переопределение его в прототипе Engineer.


Рисунок 8.4: Добавление свойств

@@ -412,7 +412,7 @@ jane.machine == 'belau'

Обратите внимание, что с таким способом вы не можете указать начальное значение наследуемого свойства, такого как name. Если вы хотите задать начальное значение для наследуемых свойств в JavaScript, вам нужно добавить больше кода в функцию-конструктор.

-

До сих пор функция-конструктор создавала обобщенный объект, а затем определяла локальные свойства и значения для нового объекта. Вы можете использовать конструктор, который добавляет дополнительные свойства путем непосредственного вызова функции-конструктора для объекта, расположенного выше в цепочке прототипов. На следующем рисунке показаны эти новые определения.

+

До сих пор функция-конструктор создавала обобщенный ообъект, а затем определяла локальные свойства и значения для нового объекта. Вы можете использовать конструктор, который добавляет дополнительные свойства путем непосредственного вызова функции-конструктора для объекта, расположенного выше в цепочке прототипов. На следующем рисунке показаны эти новые определения.


Рисунок 8.6: Определение свойств в конструкторе, вариант 2

@@ -426,7 +426,7 @@ jane.machine == 'belau' } -

Предположим, вы создаете новый объект, используя Engineer, следующим образом:

+

Предположим, вы создаете новый ообъект, используя Engineer, следующим образом:

var jane = new Engineer('Doe, Jane', ['navigator', 'javascript'], 'belau');
 
@@ -434,16 +434,16 @@ jane.machine == 'belau'

JavaScript выполняет следующие действия:

    -
  1. Оператор new создает обобщенный объект и устанавливает его свойству __proto__ значение Engineer.prototype.
  2. -
  3. Оператор new передает этот новый объект в конструктор Engineer в качестве значения ключевого слова this.
  4. +
  5. Оператор new создает обобщенный ообъект и устанавливает его свойству __proto__ значение Engineer.prototype.
  6. +
  7. Оператор new передает этот новый ообъект в конструктор Engineer в качестве значения ключевого слова this.
  8. Конструктор создает новое свойство с именем base для этого объекта и присваивает значение свойства base из конструктора WorkerBee. Это делает конструктор WorkerBee методом объекта, созданного Engineer. Имя свойства base не является специальным словом. Вы можете использовать любое допустимое для свойства имя; base всего-лишь напоминает о предназначении свойства.
  9. Конструктор вызывает метод base, передавая в качестве аргументов два аргумента, переданных конструктору ("Doe, Jane" и ["navigator", "javascript"]), а также строку "engineering". Явное использование "engineering" в конструкторе указывает на то, что все объекты, созданные Engineer, имеют одинаковое значение для наследуемого свойства dept, это значение переопределяет значение, унаследованное из Employee.
  10. Поскольку base является методом Engineer, внутри вызова base JavaScript привязывает ключевое свойство this к объекту, созданному в шаге 1. Таким образом, функция WorkerBee передает поочередно аргументы "Doe, Jane" и "engineering" в функцию-конструктор Employee. Получив результат из Employee, функция WorkerBee использует оставшийся аргумент для установки значения свойства projects.
  11. После возвращения из метода base, конструктор Engineer инициализирует свойство объекта machine со значением "belau".
  12. -
  13. После возвращения из конструктора, JavaScript присваивает новый объект переменной jane.
  14. +
  15. После возвращения из конструктора, JavaScript присваивает новый ообъект переменной jane.
-

Можно подумать, что вызвав WorkerBee из конструктора Engineer, вы настроили соответствующим образом наследование для объектов, создаваемых Engineer. Это не так. Вызов конструктора WorkerBee обеспечивает только то, что объект Engineer запускается со  свойствами, определенными во всех функциях-конструкторах, которые были вызваны. Так, если позже добавить свойства в прототипы Employee или WorkerBee, эти свойства не наследуются объектами из Engineer. Например, предположим, вы использовали следующие определения:

+

Можно подумать, что вызвав WorkerBee из конструктора Engineer, вы настроили соответствующим образом наследование для объектов, создаваемых Engineer. Это не так. Вызов конструктора WorkerBee обеспечивает только то, что ообъект Engineer запускается со  свойствами, определенными во всех функциях-конструкторах, которые были вызваны. Так, если позже добавить свойства в прототипы Employee или WorkerBee, эти свойства не наследуются объектами из Engineer. Например, предположим, вы использовали следующие определения:

function Engineer (name, projs, mach) {
   this.base = WorkerBee;
@@ -508,7 +508,7 @@ function Engineer (name, projs, mach) {
  
  • Проверяется, существует ли локальное свойство с запрашиваемым именем. Если да, то возвращается значение этого свойства.
  • Если локального свойства не существует, проверяется цепочка прототипов (через использование свойства __proto__).
  • Если один из объектов в цепочке прототипов имеет свойство c запрашиваемым именем, возвращается значение этого свойства.
  • -
  • Если искомое свойство не обнаружено, считается, что объект его не имеет.
  • +
  • Если искомое свойство не обнаружено, считается, что ообъект его не имеет.
  • Результат выполнения этих шагов будет зависеть от того, в каком порядке вы создаете объекты, прототипы и их свойства. Рассмотрим пример:

    @@ -524,12 +524,12 @@ function WorkerBee () { WorkerBee.prototype = new Employee;
    -

    Предположим, на основе конструкции выше, вы создаете объект amy как экземпляр класса WorkerBee следующим выражением:

    +

    Предположим, на основе конструкции выше, вы создаете ообъект amy как экземпляр класса WorkerBee следующим выражением:

    var amy = new WorkerBee;
     
    -

    В результате, объект amy будет иметь одно локальное свойство - projects. Свойства name и dept не будут локальными для amy но будут взяты из прототипа (объект на который ссылается свойство __proto__ объекта amy). Таким образом, amy имеет три свойства:

    +

    В результате, ообъект amy будет иметь одно локальное свойство - projects. Свойства name и dept не будут локальными для amy но будут взяты из прототипа (ообъект на который ссылается свойство __proto__ объекта amy). Таким образом, amy имеет три свойства:

    amy.name == "";
     amy.dept == "general";
    @@ -543,7 +543,7 @@ amy.projects == [];
     
     

    На первый взгляд вы можете ожидать, что это изменение распространится на все экземпляры Employee. Однако этого не случится.

    -

    Когда вы устанавливаете прототип для WorkerBee вы создаете новый объект Employee, таким образом WorkerBee.prototype получает свое собственное локальное свойство name (в данном примере пустую строку). Следовательно, когда JavaScript ищет свойство name у объекта amy (экземпляра WorkerBee), он первым делом натыкается на него в прототипе WorkerBee.prototype, и до проверки Employee.prototype дело не доходит.

    +

    Когда вы устанавливаете прототип для WorkerBee вы создаете новый ообъект Employee, таким образом WorkerBee.prototype получает свое собственное локальное свойство name (в данном примере пустую строку). Следовательно, когда JavaScript ищет свойство name у объекта amy (экземпляра WorkerBee), он первым делом натыкается на него в прототипе WorkerBee.prototype, и до проверки Employee.prototype дело не доходит.

    Если у вас есть необходимость изменять некоторое свойство объекта во время работы приложения, и применять это изменение на все существующие экземпляры, не нужно создавать это свойство внутри конструктора. Вместо этого добавьте свойство в прототип, принадлежащий конструктору. Для примера, предположим, вы изменили код, который был показан выше, следующим образом:

    @@ -568,11 +568,11 @@ Employee.prototype.name = "Unknown";

    Разбираемся во взаимосвязи экземпляров

    -

    Поиск свойств в JavaScript начинается с просмотра самого объекта, и если в нем свойство не найдено, поиск переключается на объект, на который указывает ссылка __proto__. Это продолжается рекурсивно и такой процесс поиска называется "поиск в цепочке прототипов".

    +

    Поиск свойств в JavaScript начинается с просмотра самого объекта, и если в нем свойство не найдено, поиск переключается на ообъект, на который указывает ссылка __proto__. Это продолжается рекурсивно и такой процесс поиска называется "поиск в цепочке прототипов".

    -

    Специальное свойство __proto__ устанавливается автоматически при создании объекта. Оно принимает значение свойства prototype функции-конструктора. Таким образом, new Foo() создаст объект для которого справедливо выражение __proto__ == Foo.prototype. Вследствие этого, любые изменения свойств у Foo.prototype, оказывают эффект на процесс поиска свойств во всех объектах, созданных при помощи new Foo().

    +

    Специальное свойство __proto__ устанавливается автоматически при создании объекта. Оно принимает значение свойства prototype функции-конструктора. Таким образом, new Foo() создаст ообъект для которого справедливо выражение __proto__ == Foo.prototype. Вследствие этого, любые изменения свойств у Foo.prototype, оказывают эффект на процесс поиска свойств во всех объектах, созданных при помощи new Foo().

    -

    Все объекты (за исключением глобального объекта Object) имеют свойство __proto__. Все функции имеют свойство prototype. Благодаря этому, могут быть установлены родственные связи в иерархии объектов. Вы можете установить родство и происхождение объекта, сравнив его свойство __proto__ со свойством prototype конструктора. Здесь JavaScript представляет оператор instanceof как более простой способ проверки, наследуется ли объект от конкретного конструктора. Для примера:

    +

    Все объекты (за исключением глобального объекта Object) имеют свойство __proto__. Все функции имеют свойство prototype. Благодаря этому, могут быть установлены родственные связи в иерархии объектов. Вы можете установить родство и происхождение объекта, сравнив его свойство __proto__ со свойством prototype конструктора. Здесь JavaScript представляет оператор instanceof как более простой способ проверки, наследуется ли ообъект от конкретного конструктора. Для примера:

    var f = new Foo();
     var isTrue = (f instanceof Foo);
    @@ -682,9 +682,9 @@ var mac = new Engineer("Wood, Mac");

    Никакого множественного наследования

    -

    Некоторые из объектно-ориентированных языков предоставляют возможность множественного наследования. Когда один объект может унаследовать свойства и методы множества других, не связанных друг с другом объектов. В JavaScript такого не предусмотрено.

    +

    Некоторые из объектно-ориентированных языков предоставляют возможность множественного наследования. Когда один ообъект может унаследовать свойства и методы множества других, не связанных друг с другом объектов. В JavaScript такого не предусмотрено.

    -

    В JavaScript наследование свойств осуществляется путем поиска в цепочке прототипов. Так как объект может иметь лишь единственный присвоенный ему прототип, JavaScript не может осуществить наследование более чем от одной цепочки прототипов.

    +

    В JavaScript наследование свойств осуществляется путем поиска в цепочке прототипов. Так как ообъект может иметь лишь единственный присвоенный ему прототип, JavaScript не может осуществить наследование более чем от одной цепочки прототипов.

    Однако конструктор в JavaScript может вызывать любое количество вложенных конструкторов. Это дает некоторую, хоть и ограниченную (отсутствием прототипной связанности) видимость множественного наследования. Рассмотрим следующий фрагмент:

    @@ -718,6 +718,6 @@ dennis.hobby == "scuba"
    Hobbyist.prototype.equipment = ["mask", "fins", "regulator", "bcd"]
     
    -

    Объект dennis этого свойства не унаследует.

    +

    Ообъект dennis этого свойства не унаследует.

    {{PreviousNext("Web/JavaScript/Guide/Working_with_Objects", "Web/JavaScript/Guide/Iterators_and_Generators")}}
    diff --git a/files/ru/web/javascript/guide/functions/index.html b/files/ru/web/javascript/guide/functions/index.html index 2093078da0..2e62690a66 100644 --- a/files/ru/web/javascript/guide/functions/index.html +++ b/files/ru/web/javascript/guide/functions/index.html @@ -258,7 +258,7 @@ while (x < 10) { // "x < 10" — это условие для цикла

    можно было изменить на рекурсивную функцию и вызовом этой функции:

    function loop(x) {
    -  if (x >= 10) // "x >= 10" — это условие для конца выполения (тоже самое, что "!(x < 10)")
    +  if (x >= 10) // "x >= 10" — это условие для конца выполнения (тоже самое, что "!(x < 10)")
         return;
       // делать что-то
       loop(x + 1); // рекурсионный вызов
    diff --git a/files/ru/web/javascript/guide/indexed_collections/index.html b/files/ru/web/javascript/guide/indexed_collections/index.html
    index e858efb75d..ed49aa33bd 100644
    --- a/files/ru/web/javascript/guide/indexed_collections/index.html
    +++ b/files/ru/web/javascript/guide/indexed_collections/index.html
    @@ -54,7 +54,7 @@ var obj = {prop: [element0, element1, ...., elementN]}
     
     
    var arr = [42]; // Создаёт массив  с одним элементом
     var arr = Array(42); // Создаёт массив без элементов,
    -                     // но устанавлявает длину массива arr.length в 42
    +                     // но устанавливает длину массива arr.length в 42
     
     // Это эквивалентно следующему
     var arr = [];
    @@ -258,7 +258,7 @@ myArray.splice(1, 3, "a", "b", "c", "d");
     // myArray = ["1", "a", "b", "c", "d", "5"]
     // Этот код, начиная с ячейки под индексом 1 (в которой находилось значение "2"),
     // удаляет 3 элемента, и вставляет на их место
    -// элеметны, переданные в качестве последующих параметров.
    +// элементы, переданные в качестве последующих параметров.
     

    {{jsxref("Array.reverse", "reverse()")}} переставляет элементы массива в обратном порядке: первый элемент становится последним, а последний - первым.

    diff --git a/files/ru/web/javascript/guide/regular_expressions/character_classes/index.html b/files/ru/web/javascript/guide/regular_expressions/character_classes/index.html index 353de379a6..647e6e2617 100644 --- a/files/ru/web/javascript/guide/regular_expressions/character_classes/index.html +++ b/files/ru/web/javascript/guide/regular_expressions/character_classes/index.html @@ -151,11 +151,11 @@ translation_of: Web/JavaScript/Guide/Regular_Expressions/Character_Classes
    var randomData = "015 354 8787 687351 3512 8735";
     var regexpFourDigits = /\b\d{4}\b/g;
    -// \b определяет границу поиска (например, не начиает поиск с середины слова)
    +// \b определяет границу поиска (например, не начинает поиск с середины слова)
     // \d{4} определяет цифру, четыре раза
    -// определяет другую границу поиска (например, не начиает поиск с середины слова)
    +// определяет другую границу поиска (например, не начинает поиск с середины слова)
     
    -// Вывод всех числел имеющих только 4 цифры
    +// Вывод всех чисел имеющих только 4 цифры
     console.table(randomData.match(regexpFourDigits));
     // ['8787', '3512', '8735']
     
    @@ -164,9 +164,9 @@ console.table(randomData.match(regexpFourDigits));
    var aliceExcerpt = "I’m sure I’m not Ada,’ she said, ‘for her hair goes in such long ringlets, and mine doesn’t go in ringlets at all.";
     var regexpWordStartingWithA = /\b[aA]\w+/g;
    -// \b определяет границу поиска (например, не начиает поиск с середины слова)
    +// \b определяет границу поиска (например, не начинает поиск с середины слова)
     // [aA] определяет букву a или A
    -// \b определяет границу поиска (например, не начиает поиск с середины слова)
    +// \b определяет границу поиска (например, не начинает поиск с середины слова)
     
     console.table(aliceExcerpt.match(regexpWordStartingWithA));
     // ['Ada', 'and', 'at', 'all']
    -- 
    cgit v1.2.3-54-g00ecf