Я думаю, что у каждого есть свое мнение о том, является ли JavaScript, ориентированным на объект, или объектно-ориентированным языком. Эти верные поклонники JavaScript должны сказать, что JavaScript-это объектно-ориентированный язык. Например, заявление о JavaScript в книге «Возвращение короля JavaScript» основано на прототипе объектно-ориентированного. Позвольте мне поговорить о моем личном мнении. Три объектно-ориентированные особенности: наследование, полиморфизм и инкапсуляция. Хотя JavaScript не такой быстрый, как объектно-ориентированные языки, такие как Java и C#, в конце концов он обладает определенной поддержкой. Следовательно, имеет смысл сказать, что JavaScript является объектно-ориентированным языком, но из части наследования существует ряд методов наследования, но каждый метод наследования не может реализовать силу действительно ориентированного на объект языка. Следовательно, надуманно сказать, что он объектно ориентирован. Таким образом, мое понимание JavaScript более склонна назвать это упрощенным объектно-ориентированным или «псевдо» объектно-ориентированным (это псевдо-слово не имеет уничижительного значения).
Сегодня давайте поговорим о первой функции объектно-ориентированного: наследование.
Что такое наследство? Я не хочу говорить по этому поводу. Есть животное, человек и девушка. Это самая простая и типичная цепочка наследования.
В объектно-ориентированном, таких как C#, это легко.
Кода -копия выглядит следующим образом:
классовое животное
{}
Классные люди: животное
{}
Классная девушка: люди
{}
Итак, в JavaScript нет класса или наследства для обеспечения реализации, что мы должны делать?
Маскировка объекта (метод наследования строительства)
Что такое камуфляж объекта? То, что мы могли бы назвать построением наследования, легче понять. Как следует из названия, он должен использовать конструкторы для игры с наследством. Фактически, это означает, что конструктор родительского класса рассматривается как обычный метод и помещает его в конструктор подкласса для выполнения. Таким образом, при построении объекта объект подкласса, конечно, может построить метод родительского класса!
Давайте используем приведенный выше пример, код выглядит следующим образом:
Кода -копия выглядит следующим образом:
Функциональное животное ()
{
this.run = function () {alert ("Я могу запустить");};
}
Функция людей (имя)
{
// Здесь проходит метод строительства родительского класса, а затем выполняется метод строительства родительского класса. В настоящее время можно использовать методы в родительском классе.
this.father = животное;
this.father ();
// Не забудьте удалить его, иначе, когда подкласс добавляется в метод с тем же именем, что и родительский класс, он будет изменен в родительском классе.
Удалить это. Отец;
this.name = name;
this.say = function () {alert ("Мое имя"+this.name);}
}
Функция девушка (имя, возраст)
{
this.father = люди;
this.father (имя);
Удалить это. Отец;
this.age = возраст;
this.introduce = function () {alert ("Мое имя"+this.name+". I Am Am"+this.age);};
}
Таким образом, внедрена цепочка наследования, а тест:
Кода -копия выглядит следующим образом:
var a = new Animal ();
a.run ();
var p = новые люди ("Вингинг");
p.run ();
p.say ();
var g = new Girl ("Xuan", 22);
g.run ();
g.say ();
g.introduce ();
Результаты следующие:
а
беременный
в
дюймовый
эн.
фон
Тест успешен!
Давайте суммируем ключ этого кода, указать родительский класс, объявить объект родительского класса, а затем удалить временные переменные. Как вы думаете, это немного хлопотно? По крайней мере, это то, что я думаю. Как только я забываю удалить, я должен нести риск того, что родительский класс будет изменен. Для этого мы используем звонок и подаем заявку, чтобы улучшить это!
Давайте посмотрим на код и пример выше (чтобы упростить понимание каждого, необходимость его изменить, у животного есть имя):
Кода -копия выглядит следующим образом:
Функциональное животное (имя)
{
this.run = function () {alert ("Я могу запустить");};
}
Функция людей (имя)
{
// Использовать метод вызова для реализации наследования
this.father = животное;
this.father.call (это, имя);
this.name = name;
this.sayname = function () {alert ("Мое имя"+this.name;);};
}
Функция девушка (имя, возраст)
{
// Использование метода применения для реализации наследования
this.father = люди;
this.father.apply (это, новый массив (имя));
this.age = возраст;
this.introduce = function () {alert ("Мое имя"+this.name+". I Am Am"+this.age);};
}
Используя тот же тестовый код, было обнаружено, что тест был таким же успешным.
Если вы новичок, вы можете почувствовать немного головокружения, когда посмотрите на два кода ниже. Что такое звонок и что применимо? ОК, в особой теме наследования Ванчжуана я добавил дополнительную серию проблем. Если вы этого не понимаете, вы можете прочитать мою статью: «Слово Wanzhuan: позвонить и применить».
Маскировка объекта - это просто способ реализации наследования. В следующей статье я буду продолжать писать о других методах наследования и о преимуществах и недостатках нескольких методов наследования. Добро пожаловать, чтобы продолжать обращать внимание.