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); }