一次扩展所有Javascript数组

一次扩展所有Javascript数组,javascript,arrays,Javascript,Arrays,我有一个使用简单数组(Array)和类型化数组(TypedArray)的应用程序 我对数组类型开发了一些必要的扩展,如(min、max、sum等) 但这里有一个棘手的部分:如何在javascript中为所有数组定义创建的函数 如果它们之间存在某种继承层次结构,那么这个问题就会更简单。但到目前为止,我还没有发现更大的父类 目前,我正在这样做: // MIN FUNCTION Array .prototype.min = Int8Array .protot

我有一个使用简单数组(Array)和类型化数组(TypedArray)的应用程序

我对数组类型开发了一些必要的扩展,如(min、max、sum等)

但这里有一个棘手的部分:如何在javascript中为所有数组定义创建的函数

如果它们之间存在某种继承层次结构,那么这个问题就会更简单。但到目前为止,我还没有发现更大的父类

目前,我正在这样做:

// MIN FUNCTION
Array              .prototype.min =
Int8Array          .prototype.min =
Int16Array         .prototype.min =
Int32Array         .prototype.min =
Uint8Array         .prototype.min =
Uint16Array        .prototype.min =
Uint32Array        .prototype.min =
Uint8ClampedArray  .prototype.min =
Float32Array       .prototype.min =
Float64Array       .prototype.min = function () {
    // my code;
}

// MAX FUNCTION
Array              .prototype.max =
Int8Array          .prototype.max =
Int16Array         .prototype.max =
Int32Array         .prototype.max =
Uint8Array         .prototype.max =
Uint16Array        .prototype.max =
Uint32Array        .prototype.max =
Uint8ClampedArray  .prototype.max =
Float32Array       .prototype.max =
Float64Array       .prototype.max = function () {
    // my code;
}

// GO ON...
这是如此可怕的丑陋,我想撕掉我的眼睛

我该如何改进呢?有什么东西可以连接所有要使用的类型

编辑的问题
如何在不显式编写所有类型的javascript数组的情况下编写此代码?

这似乎是可行的:

函数arMax(){
var len=此长度;
var i;
var max=-无穷大;
对于(i=0;imax)
max=这个[i];
返回最大值;
}
函数arMin(){
var len=此长度;
var i;
var min=+无穷大;

对于(i=0;i,如果您要在浏览器中使用此选项,则可以从窗口对象本身获取可用数组的列表

var availableear=[];
Object.getOwnPropertyNames(窗口).forEach(函数(名称){
if(name.toString().indexOf('Array')!=-1){
availableear.push(name.toString())
}
})
console.log(可用);
控制台日志(
新窗口[AvailableEAR[0]]()

)
typedarray不共享原型?另外:我建议添加
typed array
标记。为什么不使用一个传递数组的函数呢?例如,运行
Math.max.apply(null,youraryoftypex)
工作正常。创建一个函数,接收要添加的方法及其作为字符串的名称,并迭代使用该名称将方法分配给每个原型的
原型
对象。大多数原型的
\u原型
似乎是共享的,但我不知道这是否可靠。不确定是什么问题是?您已经编写了扩展。这是一个很好的答案+1,改进了很多,但没有解决“显式编写所有类型”部分。@JonnyPiazzi这些类型只有少数。键入它们应该没什么大不了的。您通常在所有较低级别(C,C++)上都会做这种事情.在Object.prototype上打函数是可行的,但我想这有点太多了。我会把它打出来继续(除非有更好的答案)。