gpt4 book ai didi

javascript - 构造函数。无法覆盖对全局变量的引用

转载 作者:行者123 更新时间:2023-11-30 13:24:48 24 4
gpt4 key购买 nike

我使用此构造函数为游戏制作对象。现在,该系列图像每次都会被覆盖,因此所有对象在屏幕上看起来都一样。

这里是有问题的对象:

function Box() {
this.ready = false;
this.pics = pictures;//[];
this.state = 0;
this.x = 0;
this.y = 0;
this.w = 1;
this.h = 1;
this.fill = "#444";
this.load = function(array){
var foo = [];
pictures = [];
for(var i = 0; i < array.length; i++){
pictures.push(loadPic(array[i]));
foo.push(loadPic(array[i]));
}
//this.pics = pictures;
this.pics = foo;
}
}

线

this.pics = foo;

似乎什么都不做。

此外,如果我将 pics 的初始值更改为除“pictures”(这是一个全局变量)之外的任何值,游戏将不会启动。

上下文:https://github.com/kaninepete/Javascript-Games/blob/images/MVP.js

最佳答案

试试这个:

var $this = this;
this.load = function(array){
//...
$this.pics = foo;
}

你必须知道函数中的 this 与构造函数中的 this 是不同的。事实上,load() 函数中的那个指向浏览器的 window 对象。

相反,我们定义了一个名为 $this 的变量(大多数人更喜欢 that 模式)并从函数内部引用它,使其成为一个闭包。

关于javascript - 构造函数。无法覆盖对全局变量的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8886488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com