Objects Flashcards
Что такое объект?
Объект - это элемент типа Object
, представляющий собой набор свойств.
Объекты являются элементами, свойства и методы которых описаны классом-конструктором.
Чтобы создать объект-экземпляр, необходимо вызвать функцию-конструктор (класс) с аргументами и ключевым словом new
.
Что такое прототип?
Прототип объекта - это свойство конструктора (класса), ссыдающееся на объект, который наеявно наделяет созданный экземпляр своими свойствами.
Constr.prototype.method = function method() {}
Для получения и изменения прототипа используются методы: Object.getPrototypeOf
и Object.setPrototypeOf
, также используется свойство геттер/сеттер obj.\_\_proto\_\_
.
obj.\_\_proto\_\_ === Const.prototype
Создать объект с прототипом или без него возможно с помощью метода Object.create
const obj = Object.create(customObj)
Как работает конструктор?
Конструктор - это функция для создания объектов.
В теле этой функции this
ссылается на создаваемый объект.
В классах конструктор описывается как метод класса.
class NewClass { contrsuctor(name) { this.name = name } }
Экземпляр объект обладает свойством contructor
со ссылкой на или конструктор (класс).
Что такое наследование?
Наследование позволяет создать класс на основе другого класса.
Наследование происходит через наследуемые прототипы, вызов наследуемого конструктора и вызов наследуемых методов.
В классовом синтаксисе для вызовов используется ключевое слово super
, как функциональный объект.
Напишите пример наследования в классическом и классовом форматах.
function ParentClass(name) { this.name = name } ParentClass.prototype.getName = function() { return this.name } function ChildClass(name, secondName) { ParentClass.call(this, name) this.secondName = secondName } ChildClass.prototype = Object.create(ParentClass.prototype) ChildClass.constructor = ParentClass ChildClass.prototype.getFullName = function() { const name = ParentClass.prototype.getName.call(this) return name + this.secondName } class PClass { constructor(name) { this.name = name } getName() { return this.name } } class CClass extends PClass { constructor(name, secondName) { super(name) this.secondName = secondName } getFullName() { const name = super.getName() return name + this.secondName } }