Я изучал классы в JavaScript, использование прототипа и, наконец, как наследовать.Прототип и наследование в JavaScript не работает, как я ожидаю
Из моего понимания ниже следует:
- оповещения «Джон» из-за
myInstance.getIt();
который называют - оповещения «Джек» из-за
myInheritedInstance.getIt();
который называют myInheritedInstance.getParent();
был назначен.getIt()
в MyClass- Это должно тогда предупредить «Джон», когда myInheritedInstance.getParent(); называется.
Вместо того, что происходит на самом деле:
- оповещения "Джон"
- оповещения Blank
- оповещения "Jack"
У меня есть чувство, что я сделал что-то глупое или неправильно поняли здесь фундаментальную концепцию, поэтому любая помощь будет оценена по достоинству.
var MyClass = function() { };
MyClass.prototype.constructor = MyClass;
MyClass.prototype.name = "John";
MyClass.prototype.getIt = function() { alert(this.name); };
var myInstance = new MyClass();
myInstance.getIt();
//Now inheritance
var MyInheritedClass = function() { };
MyInheritedClass.prototype = new MyClass;
MyInheritedClass.prototype.constructor = MyInheritedClass;
MyInheritedClass.prototype.name = "Jack";
MyInheritedClass.prototype.getIt = function() { alert(this.name); };
MyInheritedClass.prototype.getItParent = MyClass.prototype.getIt.call(this);
var myInheritedInstance = new MyInheritedClass();
myInheritedInstance.getIt();
myInheritedInstance.getItParent();
Спасибо за разъяснение. Я думаю, что проблема в том, что я работал из не очень правильного учебника. Таким образом, нет способа получить переопределенные методы и значения базового класса с помощью вызова? Это пример, на котором вы показываете единственный способ «добраться» от них? – Nealbo
И да, я думаю, что добавление getIt в MyInheritedClass было моим собственным небольшим «faux pas», который я привел в ситуацию! – Nealbo