inheritance父构造函数参数

我正在浏览一个类似的话题的讨论,但无法find我的情况…

我正在尝试调用具有参数的父类构造函数…似乎无法正确使用它。

我有一个PhysicsBody超类,它把一个PhysicsBody作为唯一的构造参数:

 function PhysicsBody(aNode) { this.userData = aNode; // ... } 

这个PhysicsBodyinheritance了一个DynamicBody类。 构造函数也只需要一个参数作为参数…就像我会在Java中做的那样,我很想调用一些等同于"super(aNode");东西"super(aNode"); 似乎无法找出如何。

以下是DynamicBody类:

 // Wanted to give "new PhysicsBody(this, aNode)", but that fails! DynamicBody.prototype = new PhysicsBody(); DynamicBody.prototype.constructor=DynamicBody; function DynamicBody(aNode) { // calling the parent constructor fails too: // PhysicsBody.prototype.constructor.call(this, aNode); //... } 

一种方式来做到这一点:

 function PhysicsBody( aNode ) { this.userData = aNode; } PhysicsBody.prototype.pbMethod = function () {}; function DynamicBody( aNode ) { PhysicsBody.call( this, aNode ); } // setting up the inheritance DynamicBody.prototype = Object.create( PhysicsBody.prototype ); DynamicBody.prototype.dbMethod = function () {}; 

现在,当你这样做

 var pb = new PhysicsBody( '...' ); 

实例pb获得一个userData属性,并inheritance了PhysicsBody.prototype (本例中为PhysicsBody.prototype )的方法。


当你这样做

 var db = new DynamicBody( '...' ); 

实例db获取userData属性,并inheritanceDynamicBody.prototype (本例中为dbMethod中的方法,该方法inheritance自PhysicsBody.prototype

如果我正确地理解了你,说你想inheritance父构造函数参数,那么你的意思是new DynamicBody(1, 2, 3)将在内部为DynamicBody实例调用PhysicsBody(1, 2, 3)

这可以通过使用.apply和传递arguments来完成: http : //jsfiddle.net/pmkrQ/ 。

 function DynamicBody() { PhysicsBody.apply(this, arguments); }