阵列拼接原型

时间:2015-05-27 13:07:03

标签: javascript arrays node.js prototype

我试图在我的NodeJS应用程序中扩展Array splice功能,但不幸的是它没有工作,我得到了错误的结果。看来我的阵列不是一个:

var EggDBArray = function(){
}
EggDBArray.prototype = Array.prototype;
EggDBArray.prototype.splice=(function(){
    var original = Array.prototype.splice;
    return function() {
        return original.apply(this,arguments);
    };
})();

当我在EggDBArray上运行拼接时,我得不到[]但{}

console.log(myArray);

{ '0': { FIELD: 'a', FIELD_1: 'b', FIELD_2: 'c' },
  '1': { FIELD: 'd', FIELD_1: 'e', FIELD_2: 'f' },
  '2': { FIELD: 'g', FIELD_1: 'h', FIELD_2: 'i' },
  '3': { FIELD: 'j', FIELD_1: 'k', FIELD_2: 'l' },
  '4': { FIELD: 'm', FIELD_1: 'n', FIELD_2: 'o' },
  '5': { FIELD: 'o', FIELD_1: 'p', FIELD_2: 'q' },
  '6': { FIELD: 'u', FIELD_1: 'v', FIELD_2: 'w' },
  '7': { FIELD: 'r', FIELD_1: 's', FIELD_2: 't' },
  '8': { FIELD: 'x', FIELD_1: 'y', FIELD_2: 'z' },
  '9': { FIELD: 'a', FIELD_1: 'b', FIELD_2: 'c' },
  '10': { FIELD: 'd', FIELD_1: 'e', FIELD_2: 'f' },
  '11': { FIELD: 'm', FIELD_1: 'n', FIELD_2: 'o' },
  '12': { FIELD: 'o', FIELD_1: 'p', FIELD_2: 'q' },
  '13': { FIELD: 'r', FIELD_1: 's', FIELD_2: 't' },
  '14': { FIELD: 'u', FIELD_1: 'v', FIELD_2: 'w' },
  '15': { FIELD: 'x', FIELD_1: 'y', FIELD_2: 'z' },
  '16': { FIELD: 'g', FIELD_1: 'h', FIELD_2: 'i' },
  '17': { FIELD: 'j', FIELD_1: 'k', FIELD_2: 'l' },
  '18': { FIELD: 'a', FIELD_1: 'b', FIELD_2: 'c' },
  '19': { FIELD: 'd', FIELD_1: 'e', FIELD_2: 'f' },
  '20': { FIELD: 'g', FIELD_1: 'h', FIELD_2: 'i' },
  '21': { FIELD: 'j', FIELD_1: 'k', FIELD_2: 'l' },
  '22': { FIELD: 'm', FIELD_1: 'n', FIELD_2: 'o' },
  '23': { FIELD: 'o', FIELD_1: 'p', FIELD_2: 'q' },
  '24': { FIELD: 'r', FIELD_1: 's', FIELD_2: 't' },
  '25': { FIELD: 'u', FIELD_1: 'v', FIELD_2: 'w' },
  '26': { FIELD: 'x', FIELD_1: 'y', FIELD_2: 'z' },
  length: 27 }

我找到了"例子"在这里:How to extend Array.prototype.push()?

1 个答案:

答案 0 :(得分:1)

感谢Gist,我找到了解决方案。 正如我们所看到的(在Chrome控制台之外),EddDBArray不是一个数组。 现在它完美无缺:

-lcomplex

关于proto

的其他有用链接

我在拼接动作EggDBArray

之前用它进行预处理