gpt4 book ai didi

javascript - 在 javascript 中更新对象的定义

转载 作者:行者123 更新时间:2023-11-29 16:25:22 26 4
gpt4 key购买 nike

我对面向对象的东西相当陌生,所以这很可能是完成这项工作的错误方法。

这是我目前拥有的版本的一个非常精简的版本,但概念本质上是相同的。当用户单击页面上的 Canvas 元素时,我会创建下面粒子对象的 20 个实例,将它们附加到一个数组,同时以 30FPS 更新 Canvas 并根据每个实例的 x 属性绘制圆圈目的。一旦粒子离开屏幕,它就会从数组中删除。

var particle = function()
{
var _this = this;
this.velocity = 1;
this.x = 0;

this.updateVelocity = function(newVelocity)
{
_this.multiplier = newVelocity;
}

var updateObject = function()
{
_this.x += velocity;
}

}

我希望用户能够控制使用页面上的输入元素创建的新粒子的速度。更新后,我有一个事件监听器调用

particle.updateVelocity(whateverTheUserEntered);

但是我收到错误“粒子没有 updateVelocity 方法”。在阅读了一些关于该主题的内容之后,我了解到要调用该函数,我需要创建该对象的一个​​实例,但这只会更新该实例的速度值,这对我来说不起作用。

我的问题是,有没有办法实现我正在做的事情,或者我是否以完全错误的方式实现了这一目标?正如我所说,我仍在掌握 OOP 原则,所以我可能刚刚回答了我自己的问题......

最佳答案

试试这个:

var particle = new (function()
{
var _this = this;
this.velocity = 1;
this.x = 0;

this.updateVelocity = function(newVelocity)
{
_this.multiplier = newVelocity;
}

var updateObject = function()
{
_this.x += velocity;
}

})();

您正在创建一个函数,然后将变量粒子设置为该值。因此,粒子不会有任何特殊属性。然而,我上面的示例通过使用 new 并将函数作为构造函数分配 article 一个(现在是匿名)类的实例。

关于javascript - 在 javascript 中更新对象的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6524387/

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