From 980fe00a74a9ad013b945755415ace2e5429c3c2 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Wed, 27 Oct 2021 02:31:24 +0300 Subject: [RU] Remove notranslate (#2874) --- .../ru/learn/javascript/objects/basics/index.html | 52 +++++++++++----------- 1 file changed, 26 insertions(+), 26 deletions(-) (limited to 'files/ru/learn/javascript/objects/basics') diff --git a/files/ru/learn/javascript/objects/basics/index.html b/files/ru/learn/javascript/objects/basics/index.html index 0c8b3f6a5e..453f1ca169 100644 --- a/files/ru/learn/javascript/objects/basics/index.html +++ b/files/ru/learn/javascript/objects/basics/index.html @@ -34,15 +34,15 @@ original_slug: Learn/JavaScript/Объекты/Основы

Как и во многих случаях в JavaScript, создание объекта часто начинается с определения и инициализации переменной. Попробуйте ввести следующий код JavaScript в ваш файл, а затем сохраните файл и обновите страницу браузера:

-
const person = {};
+
const person = {};

Если вы введёте person в текстовое JS консоль и нажмёте клавишу Enter, должен получиться следующий результат:

-
Object { }
+
Object { }

Поздравляем, вы только что создали ваш первый объект. Но это пустой объект, поэтому мы не можем с ним ничего сделать. Давайте обновим наш объект, чтобы он выглядел так:

-
const person = {
+
const person = {
   name: ['Bob', 'Smith'],
   age: 32,
   gender: 'male',
@@ -58,7 +58,7 @@ original_slug: Learn/JavaScript/Объекты/Основы
 
 

После сохранения и обновления, попробуйте ввести что-нибудь следующее в консоль JavaScript браузера:

-
person.name
+
person.name
 person.name[0]
 person.age
 person.interests[1]
@@ -73,7 +73,7 @@ person.greeting()

Итак что здесь происходит? Объект состоит из нескольких элементов, каждый из которых имеет своё название (пример name и age выше), и значение (пример ['Bob', 'Smith'] и 32). Каждая пара название/значение должны быть разделены запятой, а название и значение в каждом случае разделяются двоеточием. Синтаксис всегда следует этому образцу:

-
const objectName = {
+
const objectName = {
   member1Name: member1Value,
   member2Name: member2Value,
   member3Name: member3Value
@@ -89,7 +89,7 @@ person.greeting()

Выше вы получили доступ к свойствам и методам используя точечную запись (dot notation). Имя объекта (person) действует как пространство имён (namespace) — оно должно быть введено первым, для того чтобы получить доступ ко всему что заключено (encapsulated) внутри объекта. Далее вы пишете точку, затем элемент, к которому хотите получить доступ — это может быть имя простого свойства, элемент массива, или вызов одного из методов объекта, например:

-
person.age
+
person.age
 person.interests[1]
 person.bio()
@@ -97,28 +97,28 @@ person.bio()

Можно даже сделать значением элемента объекта другой объект. Например, попробуйте изменить значение свойства name с такого

-
name: ['Bob', 'Smith'],
+
name: ['Bob', 'Smith'],

на такое

-
name : {
+
name : {
   first: 'Bob',
   last: 'Smith'
 },

Здесь мы фактически создаём внутреннее пространство имён (sub-namespace). Это звучит сложно, но на самом деле это не так — для доступа к этим элементам вам нужно сделать один дополнительный шаг с ещё одной точкой. Попробуйте в консоли браузера следующее: 

-
person.name.first
+
person.name.first
 person.name.last

Важно: На этом этапе вам также нужно будет пересмотреть код метода и изменить все экземпляры с

-
name[0]
+
name[0]
 name[1]

на

-
name.first
+
name.first
 name.last

Иначе ваши методы больше не будут работать.

@@ -127,12 +127,12 @@ name.last

Существует другой способ получить свойства объекта — использовать скобочную запись (bracket notation). Вместо написания этого кода:

-
person.age
+
person.age
 person.name.first

Вы можете использовать следующий

-
person['age']
+
person['age']
 person['name']['first']

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

@@ -141,42 +141,42 @@ person['name']['first']

До сих пор мы рассматривали только возврат (или получение) элементов объекта — вы так же можете установить (обновить) значение элемента объекта просто объявив элемент, который вы хотите установить (используя точечную или скобочную запись), например:

-
person.age = 45;
+
person.age = 45;
 person['name']['last'] = 'Cratchit';

Попробуйте ввести эти строки, а затем снова верните элементы, чтобы увидеть, как они изменились

-
person.age
+
person.age
 person['name']['last']

Вы можете не просто обновлять и устанавливать значения свойств и методов объекта, а так же устанавливать совершенно новые элементы. Попробуйте их в консоли JS:

-
person['eyes'] = 'hazel';
+
person['eyes'] = 'hazel';
 person.farewell = function() { alert("Bye everybody!"); }

Теперь вы можете проверить ваши новые элементы:

-
person['eyes']
+
person['eyes']
 person.farewell()

Одним из полезных аспектов скобочной записи является то, что с её помощью можно динамически задавать не только значения элементов, но и их имена. Предположим, что мы хотим, чтобы пользователи могли хранить пользовательские типы данных, введя имя и значение элемента в два следующих поля? Мы могли бы получить эти значения следующим образом:

-
let myDataName = nameInput.value;
+
let myDataName = nameInput.value;
 let myDataValue = nameValue.value;

Затем мы можем добавить имя и значение этого нового элемента в объект person таким образом:

-
person[myDataName] = myDataValue;
+
person[myDataName] = myDataValue;

Чтобы проверить это, попробуйте добавить следующие строки в свой код, после закрывающей скобки объекта person :

-
let myDataName = 'height';
+
let myDataName = 'height';
 let myDataValue = '1.75m';
 person[myDataName] = myDataValue;

Теперь попробуйте сохранить и обновить, затем введите следующее в консоль браузера:

-
person.height
+
person.height

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

@@ -184,7 +184,7 @@ person[myDataName] = myDataValue;

Возможно, вы заметили что-то странное в наших методах. Посмотрите на этот пример:

-
greeting: function() {
+
greeting: function() {
   alert('Hi! I\'m ' + this.name.first + '.');
 }
@@ -192,7 +192,7 @@ person[myDataName] = myDataValue;

Давайте проиллюстрируем, что мы имеем в виду, с упрощённой парой объектов person :

-
const person1 = {
+
const person1 = {
   name: 'Chris',
   greeting: function() {
     alert('Hi! I\'m ' + this.name + '.');
@@ -214,13 +214,13 @@ const person2 = {
 
 

Поэтому, когда вы использовали строковые методы, такие как:

-
myString.split(',');
+
myString.split(',');

Вы использовали метод доступный в экземпляре класса String. Каждый раз создавая строку в вашем коде, эта строка автоматически создаётся как экземпляр String, и поэтому имеет несколько общих методов/свойств, доступных на нем.

Когда вы обращались к объектной модели документа (DOM), используя следующие строки:

-
const myDiv = document.createElement('div');
+
const myDiv = document.createElement('div');
 const myVideo = document.querySelector('video');

Вы использовали методы доступные в экземпляре класса Document. Для каждой загруженной веб-страницы создаётся экземпляр Document, называемый document, который представляет всю структуру страницы, её содержимое и другие функции, такие как URL-адрес. Опять же, это означает, что он имеет несколько общих методов/свойств, доступных на нем.

@@ -229,7 +229,7 @@ const myVideo = document.querySelector('video');

Обратите внимание, что встроенные объекты/API не всегда создают экземпляры объектов автоматически. Как пример, Notifications API — который позволяет новым браузерам запускать системные уведомления, требует, чтобы вы создавали новый экземпляр объекта с помощью конструктора для каждого уведомления, которое вы хотите запустить. Попробуйте ввести следующее в консоль JavaScript:

-
const myNotification = new Notification('Hello!');
+
const myNotification = new Notification('Hello!');

Опять же, мы рассмотрим конструкторы в следующей статье.

-- cgit v1.2.3-54-g00ecf