如何使用父构造函数?

时间:2016-02-14 18:36:05

标签: javascript oop

请帮助解决问题。我有基础'单位':

var Unit = function() { 
  this.x_coord = x_coord;
  this.y_coord = y_coord;
  this.color = color;
};

和儿童班' playerUnit':

var playerUnit = function(gameObj, x_coord, y_coord, color) { 
  Unit.apply(this, arguments);
};

playerUnit.prototype = Object.create(Unit.prototype);

var Game = function(options) {
  new playerUnit(this,1,1,'red');  
};

var app = new Game(); 

我计划将来做很多这些儿童课程:' enemyUnit',' tankUnit',' boatUnit'等我需要使用常见属性:x_coord,y_coord,color。

i try use Unit.apply(this, arguments);

但是在启动脚本后我在控制台中跟随错误消息:

  

未捕获的ReferenceError:未定义x_coord

jsfiddle:https://jsfiddle.net/vzk73qah/2/

1 个答案:

答案 0 :(得分:1)

您应该在Unit中定义参数:

var Unit = function(gameObj, x_coord, y_coord, color) { 
  // ...
};

还要考虑传递一个对象以避免在所有函数中重复这些参数。

var Unit = function(data) { 
  this.x_coord = data.x_coord;
  this.y_coord = data.y_coord;
  this.color = data.color;
};
var playerUnit = function(data) { 
  Unit.call(this, data);
};
new playerUnit({
  gameObj: this,
  x_coord: 1,
  y_coord: 1,
  color: 'red'
});