Прототипы. Наследование

Содержание

Слайд 2

Прототипы

Каждая функция создается со свойством prototype - объектом, содержащим свой­ства и методы,

Прототипы Каждая функция создается со свойством prototype - объектом, содержащим свой­ства и
которые должны быть доступны в экземплярах конкретного ссы­лочного типа. Этот объект в буквальном смысле является прототипом для объекта, создаваемого при вызове конструктора.
Преимущество использования прототипа в том, что все его свойства и методы общие для объектов. Вместо того чтобы на­значать атрибуты объекту в конструкторе, их можно назначить непосредственно прототипу

Слайд 3

Прототипы

Когда мы хотим прочитать свойство из object, а оно отсутствует, JavaScript автоматически

Прототипы Когда мы хотим прочитать свойство из object, а оно отсутствует, JavaScript
берёт его из прототипа. В программировании такой механизм называется «прототипным наследованием».
Свойство [[Prototype]] является внутренним и скрытым, но есть много способов задать его.

Слайд 4

Прототипы

let animal = {
eats: true
};
let rabbit = {
jumps: true
};
rabbit.__proto__ =

Прототипы let animal = { eats: true }; let rabbit = {
animal;

Слайд 5

Прототипы

Цикл for..in проходит не только по собственным, но и по унаследованным свойствам

Прототипы Цикл for..in проходит не только по собственным, но и по унаследованным
объекта.

// Object.keys возвращает только собственные ключи
alert(Object.keys(rabbit)); // jumps
// for..in проходит и по своим, и по унаследованным ключам
for(let prop in rabbit) alert(prop); // jumps, затем eats

Слайд 6

Прототипы

Если унаследованные свойства нам не нужны, то мы можем отфильтровать их при

Прототипы Если унаследованные свойства нам не нужны, то мы можем отфильтровать их
помощи встроенного метода obj.hasOwnProperty(key): он возвращает true, если у obj есть собственное, не унаследованное, свойство с именем key.

Слайд 7

Прототипы

новые объекты могут быть созданы с помощью функции-конструктора new F().
Если в F.prototype

Прототипы новые объекты могут быть созданы с помощью функции-конструктора new F(). Если
содержится объект, оператор new устанавливает его в качестве [[Prototype]] для нового объекта.

Слайд 8

Прототипы

Установка Rabbit.prototype = animal буквально говорит интерпретатору следующее: "При создании объекта через

Прототипы Установка Rabbit.prototype = animal буквально говорит интерпретатору следующее: "При создании объекта
new Rabbit() запиши ему animal в [[Prototype]]".

let animal = {
eats: true
};
function Rabbit(name) {
this.name = name;
}
Rabbit.prototype = animal;
let rabbit = new Rabbit("White Rabbit"); // rabbit.__proto__ == animal
alert( rabbit.eats ); // true

Слайд 9

Альтернативный синтаксис прототипов

function Person(){ }
Person . prototype = {
name : "Nicholas",
age :

Альтернативный синтаксис прототипов function Person(){ } Person . prototype = { name
29,
job : "Software Engineer" , sayName : function ( ) {
alert (this . name ) ;
} };

Слайд 10

Прототипы

С помощью прототипов встроенных объектов можно получать ссылки на методы, предлагаемые по

Прототипы С помощью прототипов встроенных объектов можно получать ссылки на методы, предлагаемые
умолчанию, и определять новые методы. Кроме того, эти прототипы можно изменять, что позволяет добавлять методы к встроенным объектам.

Слайд 11

Прототипы

obj = new Object(), где Object – встроенная функция-конструктор для объектов с

Прототипы obj = new Object(), где Object – встроенная функция-конструктор для объектов
собственным свойством prototype, которое ссылается на огромный объект с методом toString и другими.
Другие встроенные объекты, такие как Array, Date, Function и другие, также хранят свои методы в прототипах.

Слайд 12

Прототипы

Прототипы

Слайд 13

Прототипы

Прототипы

Слайд 14

Методы прототипов
Object.getPrototypeOf(obj) – возвращает свойство [[Prototype]] объекта obj.
Object.setPrototypeOf(obj, proto) – устанавливает свойство

Методы прототипов Object.getPrototypeOf(obj) – возвращает свойство [[Prototype]] объекта obj. Object.setPrototypeOf(obj, proto) –
[[Prototype]] объекта obj как proto.

Слайд 15

Методы прототипов
alert(Object.getPrototypeOf(rabbit) === animal);
Object.setPrototypeOf(rabbit, {});

Методы прототипов alert(Object.getPrototypeOf(rabbit) === animal); Object.setPrototypeOf(rabbit, {});

Слайд 16

Задача 1

Создать функцию конструктор Dog, который наследует метод eat из объекта Animal

Задача 1 Создать функцию конструктор Dog, который наследует метод eat из объекта Animal

Слайд 17

Задача 2

Реализовать на основе прототипного наследования создание геометрических фигур (например, базовая функция

Задача 2 Реализовать на основе прототипного наследования создание геометрических фигур (например, базовая
фигура, от которой наследуются функции рисования круга, квадрата, прямоугольника) - у фигур должны быть свойства цвета, размера, положения на странице, методы нарисовать фигуру, вычислить площадь фигуры
Имя файла: Прототипы.-Наследование.pptx
Количество просмотров: 35
Количество скачиваний: 0