Objects Flashcards

1
Q

Что такое объект?

A

Объект - это элемент типа Object, представляющий собой набор свойств.

Объекты являются элементами, свойства и методы которых описаны классом-конструктором.
Чтобы создать объект-экземпляр, необходимо вызвать функцию-конструктор (класс) с аргументами и ключевым словом new.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое прототип?

A

Прототип объекта - это свойство конструктора (класса), ссыдающееся на объект, который наеявно наделяет созданный экземпляр своими свойствами.

Constr.prototype.method = function method() {}

Для получения и изменения прототипа используются методы: Object.getPrototypeOf и Object.setPrototypeOf, также используется свойство геттер/сеттер obj.\_\_proto\_\_.

obj.\_\_proto\_\_ === Const.prototype

Создать объект с прототипом или без него возможно с помощью метода Object.create

const obj = Object.create(customObj)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Как работает конструктор?

A

Конструктор - это функция для создания объектов.
В теле этой функции this ссылается на создаваемый объект.

В классах конструктор описывается как метод класса.

class NewClass {
  contrsuctor(name) {
		this.name = name
	}
}

Экземпляр объект обладает свойством contructor со ссылкой на или конструктор (класс).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что такое наследование?

A

Наследование позволяет создать класс на основе другого класса.
Наследование происходит через наследуемые прототипы, вызов наследуемого конструктора и вызов наследуемых методов.
В классовом синтаксисе для вызовов используется ключевое слово super, как функциональный объект.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Напишите пример наследования в классическом и классовом форматах.

RunJS

A
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
  }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly