首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >melonJS不清楚"this“的用法和构造函数调用

melonJS不清楚"this“的用法和构造函数调用
EN

Stack Overflow用户
提问于 2014-03-14 09:53:18
回答 1查看 255关注 0票数 1

我正在关注这个melon JS tutorial,并且在第3部分中。

我对这段代码中的几件事不太清楚

代码语言:javascript
复制
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中定义了一个方法。

代码语言:javascript
复制
game.PlayerEntity.init(1, 2, 3);

4)如果使用this.parent(x, y, settings)调用构造函数,x, y, settings参数设置在哪里?在Java中,您可以这样调用构造函数:

代码语言:javascript
复制
public Bicycle(int val1, int val2) {
    myVal1 = val1;
    myVal2 = val2;
}

然后创建类的新实例:

代码语言:javascript
复制
Bicycle bike = new Bicycle(1, 2);

因此,在创建实例时会调用Bicycle的构造函数。

但是,我不清楚this.parent(x, y, settings);是如何“调用构造函数”的。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-03-14 10:25:23

这个约定最初是由John Resig描述的。事实上,它甚至在melonJS文档中提到了他。

发生的继承是.parent派生发挥作用的地方。基本上,this引用的是您当前的对象,在本例中为PlayerEntity

extend不是一个内置函数,它在幕后做了一些事情--其中之一就是修改属性.parent以引用“超类”。您可以在源代码中看到这一点

代码语言:javascript
复制
Object.extend = function(prop) {
    // _super rename to parent to ease code reading
    var parent = this.prototype;

由于PlayerEntity本质上扩展了ObjectEntity,因此在此调用过程中发生了什么

代码语言:javascript
复制
this.parent(x, y, settings);

使用这3个参数(x,y,设置)调用ObjectEntity,以使用继承来构造底层属性和状态。

github上的melonJS源代码:https://github.com/melonjs/melonJS/blob/master/src/core.js

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22394692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档