Phaser 3中的"this"指的是什么?

9

我是一位初学者,希望使用Phaser 3制作简单的游戏。我发现Javascript与其他面向对象编程语言(如C++或Java)有些不同。我查看了官方网站和其他教程页面上的教程,大部分代码都像这样:

var config = {
    ...
    scene: {
        preload: preload,
        create: create,
        update: update
    }
}
var game = new Phaser.Game(config)

function preload(){
    this.load.img(...)
}

我的问题是preload()函数中的"this"指的是什么?这是否意味着我们之前定义的"game"?

如何在控制台中检查对象的类?typeof()只会告诉你"object"


请查看https://www.w3schools.com/js/js_function_invocation.asp。它简单地解释了`this`的概念。 - Bahman Parsa Manesh
2
可能是[“this”关键字如何工作?]的重复问题(https://dev59.com/zHA75IYBdhLWcg3wv70j)。 - mpm
2个回答

5

thisPhaser.Scene 的一个实例,而不是 Phaser.Game

其他答案是不正确的。该代码在浏览器中运行。

要查看有关 Scene 的文档,您可以在此处查看:这里


2
在代码中,this是指向您的游戏实例的指针,因此您可以调用Phaser方法来加载资源、调整相机等。
在您的配置中,您正在设置在游戏的预加载步骤中调用哪个函数。当Phaser运行时,它调用您的函数(恰好也被命名为preload),并将this的作用域设置为游戏实例。

2
在这种情况下,“this”的分配有点隐式发生,因为Phaser的编排是在幕后进行的,您在自定义代码中看不到“preload”的调用者,除非将其定义为Phaser可以在“config”中调用的内容。 - MattTreichel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接