我正在尝试使用一组随机的预定义值来获取数组。
假设我有一个常规值数组
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()
方式做这个。
我不确定,但似乎如果我可以自定义Array Object的构造函数,我可以在那里插入随机化代码以及种子数组,并让它每次都抽出一个新的随机数组。
同样,我不确定它是否可能,但我已经尝试了很多东西,比如
Seed.prototype.Seed = function(){
// cannot set property Seed of undefined
}
Seed.constructor = function(){
// never gets called
}
我觉得这些东西可能会奏效,但我想我不知道我在做什么。请澄清我。
答案 0 :(得分:2)
这个问题的根源似乎是“我可以将数组子类化吗?”
你可以:
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();