我正在关注这个melon JS tutorial,并且在第3部分中。
我对这段代码中的几件事不太清楚
game.PlayerEntity = me.ObjectEntity.extend({
init: function(x, y, settings) {
this.parent(x, y, settings);
... more code here
},首先,您将在我的“游戏”对象中创建一个新成员,名为"PlayerEntity“,它扩展了melonJS (me)对象实体类。我明白了。但是我不明白
1) this是否指的是“游戏”对象?
2)如果是这样,那么this.parent将引用“game”的父类-这仅仅是它继承的ObjectEntity类吗?
3)为什么不能从game对象外部调用呢?它说它没有方法init,尽管我在game.PlayerEntity {} object中定义了一个方法。
game.PlayerEntity.init(1, 2, 3);4)如果使用this.parent(x, y, settings)调用构造函数,x, y, settings参数设置在哪里?在Java中,您可以这样调用构造函数:
public Bicycle(int val1, int val2) {
myVal1 = val1;
myVal2 = val2;
}然后创建类的新实例:
Bicycle bike = new Bicycle(1, 2);因此,在创建实例时会调用Bicycle的构造函数。
但是,我不清楚this.parent(x, y, settings);是如何“调用构造函数”的。
谢谢!
发布于 2014-03-14 10:25:23
这个约定最初是由John Resig描述的。事实上,它甚至在melonJS文档中提到了他。
发生的继承是.parent派生发挥作用的地方。基本上,this引用的是您当前的对象,在本例中为PlayerEntity。
extend不是一个内置函数,它在幕后做了一些事情--其中之一就是修改属性.parent以引用“超类”。您可以在源代码中看到这一点
Object.extend = function(prop) {
// _super rename to parent to ease code reading
var parent = this.prototype;由于PlayerEntity本质上扩展了ObjectEntity,因此在此调用过程中发生了什么
this.parent(x, y, settings);使用这3个参数(x,y,设置)调用ObjectEntity,以使用继承来构造底层属性和状态。
github上的melonJS源代码:https://github.com/melonjs/melonJS/blob/master/src/core.js
https://stackoverflow.com/questions/22394692
复制相似问题