Я делал несколько библиотек и библиотек расширений, и мне не очень удобно использовать прототип, потому что в реальном мире у вас фактически есть частные переменные, которые делают не требуется доступ к инстанцированному объекту.JavaScript: Наследование прототипом, без использования прототипа для определения/вызова методов
var parent_class = function(num) {
var number = num;
this.method = function(anum) {
number += anum;
};
this.getNumber = function() {
var fnumber = number + 2;
return fnumber;
};
};
var child_class = function(num1, num2) {
var sum = num1 + num2;
parent_class.call(this, sum); // initialize parent class
this.method = function() {
sum -= 1;
base.method(sum); // what to do here
};
};
child_class.prototype = new parent_class(); // inherit from parent
child_class.prototype.constructor = child_class; // maintain new constructor
var c = new child_class(1, 4); // child_class.sum = 5, parent_class.number = 5
c.method(); // child_class.sum = 4, parent_class.number = 9
var num = c.getNumber(); // returns 11
Теперь, без объявления и опираясь на методы, прототипов, как я могу получить what to do here
линии работать? Я понимаю, что я мог бы позвонить this.method();
внутри child_class и сохранить его как переменную, но Я хочу переопределяемые методы.
Моя предыдущая тема была не очень ожидаемой, поскольку все предполагают, что я могу просто прототипировать все или использовать частные переменные, чтобы обойти проблему. Должен быть способ сделать это без прототипирования.
Я хочу назвать.method();
изнутри экземплярchild_class
без сохранения предыдущих.method();
в качестве частного переменной или с помощью методов прототипа, который, по понятным причинам, не может получить доступ к закрытым членам.
Я не понимаю вопроса .. чего вы пытаетесь достичь? – c69
Я положил его в жирный шрифт. –