gpt4 book ai didi

javascript - 自定义数组的构造函数,还是使用自定义构造函数创建新的数组对象?

转载 作者:行者123 更新时间:2023-12-02 17:46:30 24 4
gpt4 key购买 nike

我正在尝试获取一个包含一组随机预定义值的数组。

假设我有一个常规值数组

var Seed = ['1', true, 3, 'false', 'five']

我想抽出将其作为种子的变量,并每次返回它的随机版本

var randomized = new Seed();
console.log(randomized);
// 3, 'five', 1, true, 'false'

或者类似的东西。但每次...

randomized = new Seed();
console.log(randomized);
// 'five', true, 'false', 1, 3

我什至有一个nice function to actually randomize the array ,但是,我的数组(种子)必须与其随机化代码一起封装在数据库模块中,这样我就可以有一种干净的 new ArrayClass() 方式来执行此操作。

我不确定,但似乎如果我可以自定义数组对象的构造函数,我可以将随机化代码与种子数组一起插入其中,并让它每次都抽出一个新的随机数组。

同样,我不确定这是否可能,但我已经尝试了很多事情,例如

Seed.prototype.Seed = function(){
// cannot set property Seed of undefined
}

Seed.constructor = function(){
// never gets called
}

我认为类似的东西可能会起作用,但我想我不知道我在做什么。请给我解释一下。

最佳答案

这个问题的根源似乎是“我可以对数组进行子类化吗?”

你可以:

function MyArray() {
this.push("myArray");
}

MyArray.prototype = Object.create(Array.prototype);

var a = new MyArray(); // defaults to ["myArray"]

a instanceof MyArray // true
a instanceof Array // true

至于在这个问题的背景下这是否是一个好主意,这可能是一个争论的话题。取决于用例。

如果您想要的只是随机化一些值,那么我同意评论中的@Xotic750。只需创建一个函数来返回常规数组即可。

如果您想扩展 Array 类的功能而不影响 native 实现,那么对 Array 进行子类化是一个好主意。话又说回来,也有一个直接扩展数组原型(prototype)的好例子:

Array.prototype.myCustomFunction = function() {
...
};

var a = [...];
a.myCustomFunction();

关于javascript - 自定义数组的构造函数,还是使用自定义构造函数创建新的数组对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21708160/

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