gpt4 book ai didi

javascript - 类实例的对象问题

转载 作者:行者123 更新时间:2023-12-01 04:08:34 24 4
gpt4 key购买 nike

我有一个持有者对象,可以在其中插入类实例。

var instances = {};
$.each(response.data, function(index, value) {
instances[value.platform.toLowerCase()] = new FetcherClass(value.platform, value.type, value.tempo, value.max);
});

value.platform 是新实例的名称。

一切似乎都工作正常,但是当我想在实例中调用函数时,总是会触发最后一个实例的函数。

例如:

instances.name1.start();

如果存在“name1”、“name2”和“name3”实例,则触发的 start() 函数属于“name3”实例。

这里我将输出发布到对象“实例”的控制台中。

Object name1 : FetcherClass nam2 : FetcherClass name3 : FetcherClass name4 : FetcherClass name5 : FetcherClass name6 : FetcherClass name7 : FetcherClass name8 : FetcherClass name9 : FetcherClass name10 : FetcherClass proto : Object

示例链接:JSFiddle

出了什么问题?

最佳答案

_self 中有一个意外的全局变量。第一次调用构造函数时,会创建一个名为 _SELF 的新全局变量;对构造函数的后续调用将替换它,以便该对象的所有实例都引用最新的实例。

在 FetcherClass 的构造函数中声明一个变量并使用它。

    function FetcherClass(plataforma, type, interval, faults) {
var SELF = this;
SELF.PLATAFORMA = plataforma.toLowerCase();
SELF.TYPE = type;
SELF.INTERVAL = interval;
SELF.MAX_INTENTOS = faults;

SELF.start = function() {
alert('I am '+SELF.PLATAFORMA);
}
}

关于javascript - 类实例的对象问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41645490/

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