У меня есть "SuperClass" с "info" как переменная экземпляра. "SuperClass" имеет функцию "printInfo()". "printInfo()" необходимо получить доступ к переменной экземпляра "info". Я хочу создать "SubClass" , который также имеет метод "printInfo()". Я хочу вызвать printInfo() из "SuperClass" из "printInfo()" в "SubClass" .
SuperClass = function()
{
this.info = "I am superclass";
console.log("SuperClass:");
};
SuperClass.prototype.printInfo = function(that)
{
console.log("printing from superclass printInfo");
console.log(that.info);
};
SubClass = function(){};
SubClass.prototype = new SuperClass();
SubClass.prototype.printInfo = function()
{
console.log("calling superclass");
this.constructor.prototype.printInfo(this);
console.log("called superclass");
};
var sc = new SubClass();
sc.printInfo();
Вы можете видеть, что я передаю "это" как параметр для printInfo. Без "этого" параметра "информация" печатается как "undefined". Как и в следующем случае, "this.info" undefined, когда эта функция вызывается из объекта "SubClass" .
SuperClass.prototype.printInfo = function()
{
console.log("printing from superclass printInfo");
console.log(this.info);
};
Каков правильный способ переопределения и вызова методов суперкласса в javascript, позволяя функциям обращаться к переменным экземпляра класса?