inheritance父构造函数参数
我正在浏览一个类似的话题的讨论,但无法find我的情况…
我正在尝试调用具有参数的父类构造函数…似乎无法正确使用它。
我有一个PhysicsBody
超类,它把一个PhysicsBody
作为唯一的构造参数:
function PhysicsBody(aNode) { this.userData = aNode; // ... }
这个PhysicsBody
inheritance了一个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); }