Я создал несколько библиотек и библиотек расширений, и для меня не практично использовать прототип, потому что в реальности у вас действительно есть закрытые переменные, к которым нет необходимости обращаться из экземпляра объекта.
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();
как частной переменной или используя методы-прототипы, которые по понятным причинам не могут получить доступ к закрытым членам .