我正在尝试获得一个带有一组随机预定义值的数组。
假设我有一个值的正则数组
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
我甚至有一个很好的函数来实际随机化数组,但是,我的数组(种子)必须与它的随机化代码一起封装在数据库模块中,这样我就可以有一种干净的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类的功能,那么对Array进行子类化是个好主意。再说一遍,有一个很好的例子可以直接扩展Array原型:
Array.prototype.myCustomFunction = function() {
...
};
var a = [...];
a.myCustomFunction();