Наследование классов в JavaScript

Я задаюсь вопросом, как моделировать Наследование классов в JavaScript. Я знаю, что класс не относится к JavaScript, способом, которым мы используем, являются Функции, чтобы создать объекты и сделать вещи наследования через Объект прототипа.

Например, как делают Вы преобразовываете эту структуру в JavaScript:

public class Mankind {
    public string name;
    public string lastname;
}

public class Person: Mankind {
    public void Run(string fromWhat) {
        //write the run logic
    }
}

Каков эквивалент этой части кода в JavaScript.

Править:

Я также нашел другую ссылку, где Douglas Crockford объясняет различные модели наследования, как CMS делает: Классическое Наследование в JavaScript.

Надежда это помогает другим также.

6
задан Community 23 May 2017 в 12:13
поделиться

2 ответа

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

function Mankind (name, lastname) {
  this.name = name;
  this.lastname = lastname;
}

function Person (name, lastname) {
  this.name = name;
  this.lastname = lastname;

  this.run = function() {
    // run logic
  };
}
Person.prototype = new Mankind();
Person.prototype.walk = function () {
  // walk logic
};

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

В этом шаблоне вы видите немного дублирования кода, нам нужна логика для инициализации полей также на унаследованном конструкторе, другой шаблон, который позволяет избежать этого, является приложение функции конструктора:

function Mankind (name, lastname) {
  this.name = name;
  this.lastname = lastname;
}

function Person (name, lastname) {
  Mankind.apply(this, arguments);
  this.run = function() {
    // run logic
  };
}

Подробнее:

9
ответ дан 10 December 2019 в 00:38
поделиться
0
ответ дан 10 December 2019 в 00:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: