конструктор
объявление класса
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 = 'Ъ' } }