Допустим такой код:
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);
obj является экземпляром какого класса в данном случае?ClassOne является супер классом для ClassTwo и ClassThree или только для ClassTwo?ClassThree является подклассом только ClassTwo или и ClassOne в том числе?Короче растолкуйте, как правильно называть их по отношению друг к другу.
И еще, если мы к коду выше добавим:
var newObj = Object.create(obj);
newObj становится экземпляром obj ?Помогите разобраться.
ClassOne является супер классом для ClassTwo и ClassThreenewObj не будет являться экземпляром obj. У них будут общие свойства из прототипа (общий прототип).Советую следующие источники по данной теме:
Продвижение своими сайтами как стратегия роста и независимости