Конструкторы и методы наследования

конструктор

объявление класса

1.Function заявление

Функция животных (имя) { 
this.name = имя
}

2.class заявление

класс Animal {
   Конструктор (имя) {
    это .name = имя
  }
}

 

конкретизации класса

Примеры нового оператора

пусть животное = новое животное ( «свинья»)

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

 

// При наследовании Конструкторы

Функция Parent1 () {
  это .name = 'Parent1'
}
функционировать child1 () {
 Parent1.call ( это );
 это .type = 'child1'
}

// дефицит, не может полностью наследовать свойства и методы Parent1 прототипа 
// таких как Parent1.prototype.pName определения = «PNAME» Child1 не может наследовать
// средства на реализацию прототипа цепочка наследования 
функции parent2 () {
   в этом .name = 'parent2,'
   это .arr = [л, 2,3 ]
};
Функция Child2 () {
   это .type = 'child2'
}
Child2.prototype = новый новый parent2 ();
 // недостаточно, если есть объект в конструкторе, а затем изменить параметры экземпляра объекта будет влиять на другой пример, 
// так как s1 .__ proto__ === s2 .__ proto__ общего прототип Объект, который представляет собой опорный тип значения обр 
S1 = новый новый Child2 ();
с2 = новый Child2 ();

s1.arr.push ( 4 )

console.log (s1.arr, s2.arr)   // (4) [1, 2, 3, 4] (4) [1, 2, 3, 4]
// . Комбинация 1 
Функция Parent31 () {
   это .name = 'Р31' ;
   это .arr = [л, 2,3 ]
}
функционировать Child31 () {
  Parent31.call ( это ); // Получает свойства и структуру метода 
  в этом .Type = «C31» ;
}
Child31.prototype = новый новый Parent31 (); // получить методы собственности и прототип

переменная s3 = новый Child31 ();
вар s4 = новый Child31 ();

s3.arr.push ( 4 )

console.log (s3.arr, s4.arr) // [1,2,3,4] [1,2,3]

// комбинаторной оптимизации 2, сокращение числа прогонов Parent31 конструктор 
функции Parent33 () {
   это .name = «Р33»
}
функционировать Child33 () {
  Parent33.call ( это ); // Получает свойства и структуру метода 
  в этом .Type = «C33» ;
}
вар тест = новый Child33 ();
Child33.prototype = Parent33.prototype; // получить свойства и методы прототипа 
// потому что эти два прототипа наследования является причиной их конструктора тот же 
console.log (Тест InstanceOf Child33, Тест InstanceOf Parent33) // правда , правда ,


// комбинаторной оптимизации 3

Функция Parent5 () {
   это .name = 'P5'
}
функционировать Child5 () {
  Parent5.call ( это ); // Получает свойства и структуру метода 
  в этом .Type = «С5» ;
}
был test2 = новый Child5 ();
Child5.prototype = Object.create (Parent5.prototype); 
Child5.prototype.constructor = child5
метод //object.create создает новый объект, существующий объект , чтобы обеспечить использование вновь созданного объекта __proto__ приобретенных свойств на прототипе и методы, изменить конструктор console.log (test2 InstanceOf Child5, test2 InstanceOf Parent5) // к истинной ЛЖИ
// ES6 класс наследование расширяет 
класс A {
  конструктор(){
    это .name = «а»
  }
  сказать(){
   console.log ( 'говорят' )
  }
} 
// использование расширяет B A последовательность задач , примеры которых приведены InstanceOf класс В расширяет { конструктор(){ супер();
// 相当于A.prototype.constructor.call (это) это .type = 'Ъ' } }

 

рекомендация

отwww.cnblogs.com/lizhiwei8/p/11642080.html