Классы JS (В частности ES5)

147
18 января 2020, 22:10

Допустим такой код:

function ClassOne() { 
  this.propClassOne = 'hello1'; 
} 
 
function ClassTwo() { 
  ClassOne.apply(this); 
  this.propClassTwo = 'hello2'; 
} 
 
function ClassThree() { 
  ClassTwo.apply(this); 
  this.propClassThree = 'hello3'; 
} 
 
ClassTwo.prototype = Object.create(ClassOne.prototype); 
ClassTwo.prototype.constructor = ClassTwo; 
 
ClassThree.prototype = Object.create(ClassTwo.prototype); 
ClassThree.prototype.constructor = ClassThree; 
 
var obj = new ClassThree(); 
console.log(typeof obj, obj); 
 
var newObj = Object.create(obj); 
console.log(typeof newObj, newObj);

  1. obj является экземпляром какого класса в данном случае?
  2. ClassOne является супер классом для ClassTwo и ClassThree или только для ClassTwo?
  3. И соответственно ClassThree является подклассом только ClassTwo или и ClassOne в том числе?

Короче растолкуйте, как правильно называть их по отношению друг к другу.

И еще, если мы к коду выше добавим:

var newObj = Object.create(obj);
  1. То newObj становится экземпляром obj ?

Помогите разобраться.

Answer 1
  1. ClassThree
  2. ClassOne является супер классом для ClassTwo и ClassThree
  3. Верно
  4. newObj не будет являться экземпляром obj. У них будут общие свойства из прототипа (общий прототип).

Советую следующие источники по данной теме:

  • http://learn.javascript.ru/prototype
  • https://www.youtube.com/watch?v=0vs6WkNyzec
  • https://habr.com/ru/post/151070
READ ALSO
Как задать параметры дебаггеру в visual studio code?

Как задать параметры дебаггеру в visual studio code?

Не могу разобраться как настроить debugger в vs code, а именно, куда передавать эти глобальные переменные, вот пример того как они выглядят в вебшторме

102
Отрисовка стрелки спидометра в canvas

Отрисовка стрелки спидометра в canvas

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

113
Помогите с ширеной меню на сайте

Помогите с ширеной меню на сайте

помогите пожалуйста с меню, нужно что бы на всех экранах оно было равно ширине 70% то есть на всю область сайтаКак можно это реализовать ?? давать...

105