2. Заимствовать конструктор
Чтобы решить проблему, вызванную включением значений типа эталонного типа в прототип, мы используем метод, называемый кража конструктора заимствования (также вызываемые поддельные объекты или классическое наследование).
Основная идея этой техники: назовите супертип конструктор внутри подкласса.
Конструктор может быть выполнен на недавно созданном субкласском объекте с помощью методов Apply () и call ().
function supertype () {this.colors = ["red", "blue", "green"];} function subtype () {// Унаследованный супертип supertype.apply (this);} var ancome1 = new subtype (); exance1.colors.push ("black"); alert (antain1.colors); // красный, синий, зеленый, черный экземпляр2 = новый подтип (); alert (exaction2.colors); // красный, синий, зеленыйВ приведенном выше примере конструктор Supertype фактически вызывается в среде недавно созданного экземпляра подтипа (экземпляры Encement1). Таким образом, все коды инициализации объекта, определенные в функции SuperType (), будут выполнены на новом объекте подтипа. Таким образом, каждый экземпляр подтипа будет иметь свою собственную копию атрибута цветов.
Передайте параметры
Для прототипов цепочек заимствование конструкторов имеет большое преимущество, то есть вы можете передавать параметры в супертипах конструкторов в конструкторах подтипа.
функция Supertype (name) {this.name = name;} функция subtype () {supertype.call (this, "bob"); this.age = 18;} var ancome1 = new subtype (); alert (ancome1.age); //18Alert(Instance1.name); // БобПроблема заимствования конструкторов:
Все методы определены в конструкторе, поэтому нет способа говорить о повторном использовании функций. Кроме того, методы, определенные в прототипах супертипа, также невидимы для подтипов.
3. Комбинация наследования
Комбинированное наследование, иногда называемое псевдоклассическим наследованием, относится к объединению прототипов цепей и заимствованию методов конструктора вместе. Это способ наследования, который играет сильные стороны обоих.
Используйте прототипы цепочек для реализации наследования свойств и методов прототипа;
Наследование свойств экземпляра достигается заимствованием конструкторов.
Таким образом, повторное использование функции достигается путем определения методов на прототипе, а также может гарантировать, что каждый экземпляр имеет свои собственные атрибуты.
Функция Supertype (name) {this.name = name; this.colors = ["red", "blue", "green"];} supertype.prototype.sayname = function () {alert (this.name);} function subtype (name, age) {// Наследственное атрибут supertype.call (это имя); this.age = age;} // метод наследования подтип.prototype = new Supertype (); Subtype.prototype.sayage = function () {alert (this.age);} var ancome1 = new subtype ("bob", 22); ancess1.colors.push ("black"); alert (exance1.colors); //red.blue, rageen,blackenstance1.sayname (); //Bobinstance1.sayage (); // 22var ancess2 = новый подтип ("Алиса", 21); Alert (exance2.colors); //red.blue, greeninstance2.sayname (); //Aliceinstance2.sayage (); // 21В этом примере конструктор Supertype определяет два свойства: имя и цвета. Прототип Supertype определяет метод SpeciveName ().
Конструктор подтипа проходит в параметре имени при вызове конструктора SuperType и определяет свой собственный возраст атрибутов. Затем назначьте экземпляр Supertype прототипу подтипа. Метод гласит (), определяется на этом прототипе.
Это позволяет двум различным экземплярам подтипа иметь свои собственные свойства - включая атрибуты цветов, и можно использовать тот же метод.
В приведенной выше статье кратко рассказывается о js negitance_borrow Constructors & Comminemance Insuritance - это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.