javascript - 我可以在 JavaScript 中创建自己的数组对象吗?

标签 javascript arrays object

我创建了一个具有大量数组操作(排序、过滤等)的 JavaScript 应用程序。

目前我的功能是这样的:

function (myArray, arg1, arg2,...)

其中 myArray 是我正在处理的数组,arg1、arg2... 是函数用来修改数组的参数。

我认为在对象和参数之间有一个明确的分离(la jQuery)会更整洁:

myArray.function(arg1, arg2,...)

我知道我可以使用 Array.prototype 将我的函数添加到所有数组,但这似乎太重了,因为我添加的函数确实针对我的情况,并且通常对数组没有意义。我也知道我可以创建一个对象,但那样我就无法从 JavaScript 中可用的数组方法(indexOf、过滤器等)中受益。

有没有一种方法可以创建我自己的数组对象,它会继承默认的数组方法并允许我添加自己的方法?

最佳答案

你有两个选择:

选项一是通过向其添加新方法来扩展 Array 对象:

Array.prototype.myMethod = function(arg1, arg2)
{
    // Use 'this' to access the array.
}

优点是每个 javascript 数组现在都有这个额外的方法。当多个(外部)javascript 库尝试添加相同的方法时,这也可能是一个缺点。此外,这个新方法将出现在 for(var item in myArray) 结构中,这可能会产生问题。

选项二是为扩展数组创建“工厂方法”:

function MyExtendedArray = function()
{
    var array = [];
    array.myMethod = function(arg1, arg2) {
        // Use 'this' or 'array' to access the array.
    };

    return array;
};

现在你可以这样写来创建一个新的扩展数组:

var arr = MyExtendedArray();

关于javascript - 我可以在 JavaScript 中创建自己的数组对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9233587/

相关文章:

Javascript 在函数内部使对象字面量等于 {},

javascript - ReactJs - 从 reducer 返回相同状态时不会触发 componentWillReceiveProps

javascript - JSON:解析时出错

使用嵌套循环的 Java Union 数组 2 int 数组

c - 如何在通过指向数组的指针访问时知道数组元素的数量

c - 用零初始化双类型数组时出现问题

Ruby 对象和模块

r - 扩展 R S4 对象以具有新插槽并保持原始对象以相同方式工作

javascript - 操纵 Canvas 而不是原始图像的速度和性能

javascript - 使用 Javascript 初始化数据与使用 MySQL 进行数据检索之间的性能差异?