gpt4 book ai didi

javascript - 在 Javascript 中如何制作具有可实例化的自定义行为的数组?

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

我需要一种“圆形阵列”。除了单个实例,我一切正常。我不知道如何让它“实例化”。我的意思是我希望它按以下方式工作:

var arr = ['a', 'b', 'c', 'd']; // it's kind of pseudo-code 
arr.getNext(); // gives a
arr.getNext(); // gives b
arr.getNext(); // gives c
arr.getNext(); // gives d
arr.getNext(); // gives a
arr.getNext(); // gives b
// and so on

我知道我可以创建内部有数组的对象并对其进行迭代,但我很确定我可以用另一种方式做到这一点。

问题是我需要该对象的多个实例。如果只有一个实例,我可以这样做:

var arr = ['a', 'b', 'c', 'd'];
arr.getNext = function() {
// ... I got this stuff working
}

如何允许创建此类自定义数组的多个实例?

最佳答案

即使您可以使用 Object.defineProperty 扩展 Array.prototype (创建不可枚举的属性),替代解决方案也可能很有趣,具体取决于您的实际需要。

您可以定义一个函数,返回一个数组的迭代器:

function iter(arr) {
var index = -1;

return {
next: function() {
index = (index + 1) % arr.length;
return arr[index];
}
};
}

用法:

var it = iter(arr);
it.next();

关于javascript - 在 Javascript 中如何制作具有可实例化的自定义行为的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17468309/

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