Сообщение от Maxmaxmaximus11
|
не, родительский конструктор виден будет по цепочке прототипов если он есть так что бакс не обязательно.
|
допустим, есть объект с методом, внутри которого вызывается супер метод
var obj = {
method: function() {
// тут этот объект вызывает свой супер метод
}
};
С твоим подходом проблемы начнутся, если вызвать метод в контексте другого объекта. Т.е. "цепочка" супер методов в лучшем случае не будет вызвана, в худшем нарушена.
<script src="http://nervgh.github.io/js/yum/yum.js"></script>
<script>
/**********************
* CLASSES
* *********************/
/**
* Class Animal
* @param {Number} legs
* @constructor
*/
function Animal(legs) {}
Animal.prototype.destroy = function() {
console.log('Animal.destroy()');
};
// ------------------------
// Inheritance
Object.inherit(Mammal, Animal);
/**
* Class Mammal
* @constructor
*/
function Mammal(legs, teeth) {
// call the Animal constructor
Mammal.super_.apply(this, arguments);
}
Mammal.prototype.destroy = function() {
console.log('Mammal.destroy()');
Mammal.super_.prototype.destroy.call(this);
};
// ------------------------
// Inheritance
Object.inherit(Cat, Mammal);
/**
* Class Cat
* @constructor
*/
function Cat(legs, teeth, tails) {
// call the Mammal constructor
Cat.super_.apply(this, arguments);
}
Cat.prototype.destroy = function() {
console.log('Cat.destroy()');
Cat.super_.prototype.destroy.call(this);
};
/********************
* USAGE / INSTANCE
********************/
var cat = new Cat();
cat.destroy(); // Cat -> Mammal -> Animal;
console.log('--------------------');
cat.destroy.call(this); // Cat -> Mammal -> Animal;
</script>
Сообщение от Maxmaxmaximus11
|
но мой способ поддерживает множественное наследование)
|
нет. Почему, читай тему.