我一直在學習JavaScript中的類,原型的使用以及最終如何繼承。JavaScript中的原型和繼承無法正常工作,因爲我期望
從我的理解下面應該:
- 警報「約翰」由於
myInstance.getIt();
被稱爲 - 警報「傑克」由於
myInheritedInstance.getIt();
被稱爲 myInheritedInstance.getParent();
MyClass中 已分配給
- 當myInheritedInstance.getParent();這應該提醒「約翰」。叫做。
.getIt()
而是實際發生的事情是:
- 警報 「約翰」
- 警報空白
- 警報 「傑克」
我有一種感覺,我已經做了一些愚蠢或者誤解了這裏的一個基本概念,所以任何幫助將不勝感激。
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
是的,我認爲在MyInheritedClass中添加getIt是我自己帶來的一些小小的「失禮」! – Nealbo