На этот раз мы поговорим о комбинированных, прототипах, паразитических и паразитных методах комбинации.
1. Комбинированное наследование : также известное как псевдоклассическое наследование, оно относится к методу наследования, который объединяет прототипные цепочки и заимствованные технологии конструктора в одну часть.
Давайте посмотрим на пример:
Функция Supertype (name) {this.name = name; this.colors = ["red", "blue", "green"]; } Supertype.prototype.sayname = function () {alert (this.name); } function subtype (name, age) {supertype.call (this, name); this.age = возраст; } // Метод наследования subtype.prototype = new Supertype (); Subtype.prototype.sayage = function () {alert (this.age); } var ancement1 = новый подтип ("Николас", 29); exaction1.colors.push ("черный"); Alert (ancess1.colors); // красный, синий, зеленый, черный экземпляр1.sayname (); // nicholas ancome1.sayage (); // 29 var ancess2 = новый подтип ("greg", 27); Alert (exants2.colors); // красный, синий, зеленый экземпляр2.sayname (); // greg ancess22.sayage (); // 27Комбинация наследования позволяет избежать недостатков прототипов цепочек и занимать конструкторы и интегрировать их преимущества.
2. Прототип наследования
Наследование может быть реализовано без предопределенных конструкторов, по существу выполняя мелкое копирование данного объекта. Скопированная копия может быть дополнительно изменена.
функция объекта (o) {function f () {}; F.Prototype = O; вернуть новый F; } var person = {name: "nicholas", друзья: ["shelby", "court", "van"]}; var oreperson = object (человек); sitherperson.name = "greg"; sitherperson.friends.push ("rob"); var oreperson = object (человек); sitherperson.name = "linda"; sitherperson.friends.push («Барби»); Блюдо (человек. Друзья); // Шелби, суд, Ван, Роб, Барби3. Паразитическое наследование
Очень похоже на прототип наследования, он также должен создать объект, основанный на объекте или какой -либо информации, а затем улучшить объект и, наконец, вернуть объект. Чтобы решить проблему неэффективности, вызванную комбинационной схемой наследования из -за нескольких вызовов конструктора SuperType, этот шаблон может использоваться с комбинацией наследования.
функция объекта (o) {function f () {}; F.Prototype = O; вернуть новый F; } function createanother (Original) {var clone = Object (Original); clone.sayhi = function () {alert ("hi"); }; вернуть клон; } var person = {name: "nicholas", друзья: ["shelby", "court", "van"]}; var oreverperson = createanother (человек); sitherperson.sayhi ();4. Паразитарная комбинация наследования
Сочетание преимуществ паразитического наследования и наследования комбинации является наиболее эффективным способом достижения базового наследования типа.
// Унаследование прототипной функции extend (subtype, supertype) {function f () {}; F.prototype = supertype.prototype; var prototype = new F; prototype.constructor = subtype; subtype.prototype = prototype; } // Функция метода SuperClass supertype (name) {this.name = name; this.colors = ["red", "blue", "green"]; } Supertype.prototype.sayname = function () {return this.name; } // Функция метода подкласса Supertype (name) {this.name = name; this.colors = ["red", "blue", "green"]; } Supertype.prototype.sayname = function () {return this.name; } // Метод подкласса subtype (name, age) {supertype.call (this, name); this.age = возраст; } // Прототип Extend (подтип, супертип); // метод подкласса subtype.prototype.sayage = function () {return this.age; } var ancess1 = new subtype ("shelby"); var ancement2 = новый подтип ("суд", 28); exaction1.colors.push ('black'); Alert (ancess1.colors); // красный, синий, зеленый, черный оповещение (экземпляры2.colors); // красный, синий, зеленый оповещение (экземпляры instance1 подтипа); // true Alert (Encason1 EncementOf SuperType); //истинныйЭффективность этого примера отражается в том смысле, что он вызывает только один раз конструктор супертипа и, таким образом, избегает создания ненужных ненужных свойств на подтипе. Прототип. В то же время цепочка прототипа может оставаться неизменной. Следовательно, экземпляры и iSprototypeof () также могут использоваться нормально. Разработчики обычно считают, что паразитическое комбинаторное наследование является наиболее идеальной парадигмой наследования для эталонных типов.
Приведенная выше статья JS объектно-ориентированное наследование-подробное объяснение множественного комбинации наследования-это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.