我创建了一个具有大量数组操作(排序、过滤等)的 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/