在过去的几个小时里,我一直在试图找到解决问题的方法,但这似乎是无望的。
基本上我需要知道如何从子类调用父方法。到目前为止,我尝试过的所有东西都以无法正常工作或覆盖父方法而告终。
我正在使用以下代码在 javascript 中设置 OOP:
// SET UP OOP // surrogate constructor (empty function) function surrogateCtor() {} function extend(base, sub) { // copy the prototype from the base to setup inheritance surrogateCtor.prototype = base.prototype; sub.prototype = new surrogateCtor(); sub.prototype.constructor = sub; } // parent class function ParentObject(name) { this.name = name; } // parent's methods ParentObject.prototype = { myMethod: function(arg) { this.name = arg; } } // child function ChildObject(name) { // call the parent's constructor ParentObject.call(this, name); this.myMethod = function(arg) { // HOW DO I CALL THE PARENT METHOD HERE? // do stuff } } // setup the prototype chain extend(ParentObject, ChildObject);
我需要先调用父类的方法,然后在子类中添加一些东西。
在大多数 OOP 语言中,这就像调用一样简单,parent.myMethod() 但我真的无法理解它是如何在 javascript 中完成的。
parent.myMethod()
非常感谢任何帮助,谢谢!
这是它的完成方式:ParentClass.prototype.myMethod();
ParentClass.prototype.myMethod();
或者如果你想在当前实例的上下文中调用它,你可以这样做: ParentClass.prototype.myMethod.call(this)
ParentClass.prototype.myMethod.call(this)
从带有参数的子类调用父方法也是如此: ParentClass.prototype.myMethod.call(this, arg1, arg2, ..)* 提示:使用apply()而不是call()将参数作为数组传递。
ParentClass.prototype.myMethod.call(this, arg1, arg2, ..)
apply()
call()