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) --- .../javascript/objects/inheritance/index.html | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'files/ru/learn/javascript/objects/inheritance') diff --git a/files/ru/learn/javascript/objects/inheritance/index.html b/files/ru/learn/javascript/objects/inheritance/index.html index 97e9a98fbd..f1514a92c6 100644 --- a/files/ru/learn/javascript/objects/inheritance/index.html +++ b/files/ru/learn/javascript/objects/inheritance/index.html @@ -57,7 +57,7 @@ original_slug: Learn/JavaScript/Объекты/Inheritance

Прежде всего сделайте себе локальную копию нашего файла oojs-class-inheritance-start.html (он также работает в режиме реального времени). В файле вы найдёте тот же пример конструктора Person(), который мы использовали на протяжении всего модуля, с небольшим отличием - мы определили внутри конструктора только лишь свойства:

-
function Person(first, last, age, gender, interests) {
+
function Person(first, last, age, gender, interests) {
   this.name = {
     first,
     last
@@ -69,7 +69,7 @@ original_slug: Learn/JavaScript/Объекты/Inheritance
 
 

Все методы определены в прототипе конструктора. Например:

-
Person.prototype.greeting = function() {
+
Person.prototype.greeting = function() {
   alert('Hi! I\'m ' + this.name.first + '.');
 };
@@ -88,7 +88,7 @@ original_slug: Learn/JavaScript/Объекты/Inheritance

Первое, что нам нужно сделать, это создать конструктор Teacher() - добавьте ниже следующий код:

-
function Teacher(first, last, age, gender, interests, subject) {
+
function Teacher(first, last, age, gender, interests, subject) {
   Person.call(this, first, last, age, gender, interests);
 
   this.subject = subject;
@@ -102,7 +102,7 @@ original_slug: Learn/JavaScript/Объекты/Inheritance
 
 

В качестве примечания мы могли бы просто сделать это:

-
function Teacher(first, last, age, gender, interests, subject) {
+
function Teacher(first, last, age, gender, interests, subject) {
   this.name = {
     first,
     last
@@ -119,14 +119,14 @@ original_slug: Learn/JavaScript/Объекты/Inheritance
 
 

Обратите внимание, что если конструктор, от которого вы наследуете, не принимает значения своего свойства из параметров, вам не нужно указывать их в качестве дополнительных аргументов в call(). Так, например, если у вас было что-то действительно простое:

-
function Brick() {
+
function Brick() {
   this.width = 10;
   this.height = 20;
 }

Вы можете наследовать свойства width и height, выполнив это (как и другие шаги, описанные ниже, конечно):

-
function BlueGlassBrick() {
+
function BlueGlassBrick() {
   Brick.call(this);
 
   this.opacity = 0.5;
@@ -141,11 +141,11 @@ original_slug: Learn/JavaScript/Объекты/Inheritance
 
 
  1. Добавьте следующую строку ниже своего предыдущего добавления: -
    Teacher.prototype = Object.create(Person.prototype);
    +
    Teacher.prototype = Object.create(Person.prototype);
    Здесь наш друг create() снова приходит на помощь. В этом случае мы используем его для создания нового объекта и делаем его значением Teacher.prototype. Новый объект имеет свой прототип Person.prototype и, следовательно, наследует, если и когда это необходимо, все доступные методы Person.prototype.
  2. Нам нужно сделать ещё одну вещь, прежде чем двигаться дальше. После добавления последней строки, Teacher.prototype.constructor стало равным Person(), потому что мы просто устанавливаем Teacher.prototype для ссылки на объект, который наследует его свойства от Person.prototype! Попробуйте сохранить код, загрузите страницу в браузере и введите Teacher.prototype.constructor в консоль для проверки.
  3. Это может стать проблемой, поэтому нам нужно сделать это правильно. Вы можете сделать это, вернувшись к исходному коду и добавив следующие строки внизу: -
    Object.defineProperty(Teacher.prototype, 'constructor', {
    +  
    Object.defineProperty(Teacher.prototype, 'constructor', {
         value: Teacher,
         enumerable: false, // false, чтобы данное свойство не появлялось в цикле for in
         writable: true });
    @@ -159,7 +159,7 @@ original_slug: Learn/JavaScript/Объекты/Inheritance

    Самый простой способ сделать это - определить его на прототипе Teacher() - добавить в нижнюю часть кода следующее:

    -
    Teacher.prototype.greeting = function() {
    +
    Teacher.prototype.greeting = function() {
       var prefix;
     
       if (this.gender === 'male' || this.gender === 'Male' || this.gender === 'm' || this.gender === 'M') {
    @@ -179,11 +179,11 @@ original_slug: Learn/JavaScript/Объекты/Inheritance
     
     

    Теперь, когда вы ввели весь код, попробуйте создать экземпляр объекта из Teacher(), поставив ниже вашего JavaScript-кода (или что-то похожее по вашему выбору):

    -
    var teacher1 = new Teacher('Dave', 'Griffiths', 31, 'male', ['football', 'cookery'], 'mathematics');
    +
    var teacher1 = new Teacher('Dave', 'Griffiths', 31, 'male', ['football', 'cookery'], 'mathematics');

    Теперь сохраните, обновите, и попробуйте получить доступ к свойствам и методам вашего нового объекта teacher1, например:

    -
    teacher1.name.first;
    +
    teacher1.name.first;
     teacher1.interests[0];
     teacher1.bio();
     teacher1.subject;
    -- 
    cgit v1.2.3-54-g00ecf