同様のトピックのディスカッションを閲覧していますが、自分の状況が見つかりません...
パラメータを使用して親コンストラクタを呼び出そうとしています...正しく理解できていないようです。
PhysicsBody
スーパークラスがあり、aNode
を唯一のコンストラクタ引数として使用しています。
_function PhysicsBody(aNode) {
this.userData = aNode;
// ...
}
_
このPhysicsBody
はDynamicBody
クラスを継承します。コンストラクタもaNode
を唯一の引数として受け取ります... Javaで行うのと同じように、"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);
//...
}
_
それを行う1つの方法:
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
プロパティを取得し、PhysicsBody.prototype
(この場合はpbMethod
)からメソッドを継承します。
あなたがするとき
var db = new DynamicBody( '...' );
インスタンスdb
はuserData
プロパティを取得し、DynamicBody.prototype
(この場合はdbMethod
)からメソッドを継承します。これはPhysicsBody.prototype
から継承します。 。
私が正しく理解している場合、親コンストラクター引数を継承したいということは、new DynamicBody(1, 2, 3)
がDynamicBody
インスタンスに対してPhysicsBody(1, 2, 3)
を内部的に呼び出すことを意味します。
これは、.apply
およびarguments
を渡す: http://jsfiddle.net/pmkrQ/ 。
function DynamicBody() {
PhysicsBody.apply(this, arguments);
}