我一直在看这个游戏引擎的示例,但我真的不明白为什么它会重新分配对象,我用Java编写代码并且正在学习JavaScript,这可能是概念错误。
示例https://blacksmith2d.io/Docs/Examples/Arcade-Physics/CollisionEvents
onassetsLoaded()事件,他正在设置对象属性,然后在下面重新分配它。
this.arcade = arcade;
this.circle = circle;
this.box = box;
我也不能理解if语句的这一部分
!this.circle
关于这些语句:
this.arcade = arcade;
this.circle = circle;
this.box = box;
在该代码块的前面,所有出现在右侧的变量都被定义为局部变量(对方法局部onAssetsLoaded
):
const arcade = ...
const circle = ...
const box = ...
因此,您想知道的分配实际上是将引用从局部变量复制到实例变量(即属性)。onAssetsLoaded
通话完成后,需要这样做以免丢失此信息。
关于这个表达式:
!this.circle
非运算符(!
)可用于任何表达式。它计算true
操作数何时为“ falsy”。在JavaScript中值喜欢undefined
,null
,0
,""
,NaN
,被认为是“falsy”,而所有对象被认为是“truthy”。在这里,它用于检测this.circle
尚未分配适当的值,即,这意味着onAssetsLoaded
尚未调用,并且this.circle
仍为undefined
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句