Что такое «наследование» в Javascript?

Ubuntu 16.10

В Ubuntu 16.10, можно легко установить его от терминала со следующей командой:

sudo apt install gimp

Для обновления существующей установки калеки выполните следующую команду в терминале:

sudo apt update && apt upgrade -y

, Если требуется удалить калеку, но сохранить настройки (если Вы планируете переустановку некоторого другого времени, например), выполните следующую команду в терминале:

sudo apt remove gimp

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

sudo apt purge gimp

22
задан Yi Jiang 17 February 2011 в 09:38
поделиться

3 ответа

Проще говоря, наследование - это концепция того, что одна вещь приобретает свойства или поведение чего-то другого. Сказать, что A наследует от B, означает, что A является типом B. Bird наследует от Animal, потому что Bird является типом Животное - оно может делать то же самое, но немного больше (или по-разному)!

В JavaScript это отношение немного сложно определить, но оно соответствует синтаксису. Вы должны использовать специальный объект с именем prototype, который присваивает свойства типу , например Animal. Только function имеют prototype, поэтому вы должны сначала создать функцию:

function Animal() {}; // This is the Animal *Type*
Animal.prototype.eat = function () {
    alert("All animals can eat!");
};

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

function Bird() {}; // Declaring a Bird *Type*
Bird.prototype = new Animal(); // Birds inherit from Animal
Bird.prototype.fly = function() {
    alert("Birds are special, they can fly!");
};

Эффект этого состоит в том, что все создаваемые вами Птицы (называемые экземпляром Птицы) все имеют свойства животных, но они также имеют дополнительные .fly() :

var aBird = new Bird(); // Create an instance of the Bird Type
aBird.eat(); // It should alert, so the inheritance worked
aBird.fly(); // Important part of inheritance, Bird is also different to Animal

var anAnimal = new Animal(); // Let's check an instance of Animal now
anAnimal.eat(); // Alerts, no problem here
anAnimal.fly(); // Error will occur, since only Birds have fly() in its prototype
56
ответ дан 29 November 2019 в 03:36
поделиться

Хорошее объяснение Роберта о наследовании в Javascript здесь

Способ наследования работает в JavaScript, что это prototype, а не class-based.

Например,

function Being () {
    this.living = true;
}
Being.prototype.breathes = function () {
    return true;  

Объект, который наследует Бытие

Robert.prototype = new Being;
function Robert () {
    this.blogs = true;
}
Robert.prototype.getsBored = function () {
    return "You betcha";
};  

Итак, в основном, если мы создадим новый экземпляр объекта Роберта и вызовем некоторые из его методы, результат будет:

// Create an instance of the Robert object
var me = new Robert();

/*
    Returns "You betcha" as it's a method
    belonging to the Robert object
*/
me.getsBored();

/*
    Returns true. Since the Robert object
    doesn't have a breathes method of
    its own, it goes back in the
    prototype chain to its parent
    object, Being, and finds the
    method there
*/
me.breathes();  

Также хорошо читается наследование JavaScript: Наследование JavaScript

13
ответ дан 29 November 2019 в 03:36
поделиться

Его простое наследование означает: «объекты / классы наследуются от других объектов / классов» через прототипы

, например:

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";
0
ответ дан 29 November 2019 в 03:36
поделиться
Другие вопросы по тегам:

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