我一直在学习 JavaScript 中的类、原型的使用以及如何继承。
据我了解,以下应该:
- 因
myInstance.getIt();
被呼叫而提醒“John” - 因
myInheritedInstance.getIt();
被呼叫而提醒“杰克” myInheritedInstance.getParent();
已分配到.getIt()
MyClass- 这应该会在 myInheritedInstance.getParent(); 时提醒“John”。叫做。
相反,实际发生的是:
- 警报“约翰”
- 警报空白
- 提醒“杰克”
我有一种感觉,我做了一些愚蠢的事情或误解了这里的基本概念,所以任何帮助将不胜感激。
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();