如何创建一个行为像真正的数组的构造函数?

zan*_*ona 2 javascript arrays implementation constructor class

如何创建自定义数组构造函数,它是本机Array构造函数的扩展版本?

例如,jQuery看起来像一个带有其他方法的数组,例如$().addClass.但是,它没有修改Array.prototype,因为new Array().hasClassundefined.

那么,如何在不修改的情况下创建扩展数组实现Array.prototype呢?

例:

Employees( ... )          //-> [{name: 'John', age: 32}, {name: 'Bob', age: 29}];
Employees( ... ).byAge(32)//-> [{name: 'John', age: 32}];
// and
Array().byAge             //-> undefined
Run Code Online (Sandbox Code Playgroud)

Mat*_*all 5

jQuery对象不是Array,也不"覆盖"Array类.它就像阵列一样.

您可以通过浏览源来了解jQuery如何实现这一点; 还可以在Javascript中看到类似于对象的数组,以及为什么在Javascript中使用类似于数组的对象而不是本机数组.