Рубрики
Без рубрики

Наследование JavaScript

Объяснение наследства JavaScript

Автор оригинала: Madhan Ganesh L.

JavaScript имеет интересный способ наследования. Причина обусловлена его классовой природой и где каждая конструкция на языке является объектом. На статических языках, таких как C #, вы получаете класс с другого класса. В JavaScript вы получаете объект из другого объекта. Так что это означает это подразумевает?

Давайте сломаем это к небольшому, но конкретному примеру. Ниже приведен крошечный JavaScript объект, который представляет форму (со своими свойствами).

var shape = { type: 'circle', radius: 2 };

Давайте наследуем этот класс, используя синтаксис JavaScript:

var myShape = Object.create(shape); // print the properties of myShape console.log(myShape.type); // prints 'circle' console.log(myshape.radius); // print '2'

Это ясно указывает на MyShape «наследует» свойства от формы. Подождите минуту, что только что произошло, 2 объекта разделяют память памяти свойств.

Прототип наследования

Это называется прототипным наследством. Что делает его таким интересным, это следующие шаги, которые обнаруживаются ниже. Изменим значение свойства в производном объекте (MyClass).

myClass.radius = 5;

На этом этапе копия создается только для свойства, которая обновляется в унаследованном объекте. После этого обновления планировка памяти будет выглядеть так:

Прототипное наследование после изменения сделано

После того, как копия производится в производном объекте, родитель является свойством не изменяется. Чтобы получить более конкретно, давайте распечатаем свойства:

console.log(shape.radius); // this is still 2console.log(myShape.radius); // this is 5 now

Также обратите внимание на свойство, которое не изменилось (например, «тип») в производном объекте все равно будет продолжать делиться значением от родительского объекта.

Заключение

  • В JavaScript объект наследует другой объект
  • Производное объект, по-видимому, не зависит, но разделяет свойства своего родительского объекта
  • Только когда происходит любое обновление для любого свойства, копия создается в производном объекте