1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| // constructor par défaut prenant des éléments
// exemple d'utilisation :
// var myArr = new myArray(1,2,3);
function myArray(){
this.push.apply(this,arguments);
}
// ajout des méthodes de array en écrassant le prototype (~héritage)
myArray.prototype = new Array();
// [INUTILE] correction de l'attribut "constructor" (qui a été écrasé à la ligne au dessus)
myArray.prototype.constructor = myArray;
// création d'une méthode "toArray"
myArray.prototype.toArray = function(){
return this.slice();
};
// correction de la méthode "toString" (qui plantait sous certains navigateurs comme chrome)
myArray.prototype.toString = function(){
return this.toArray().toString();
};
// ajout d'un "init" qui ajoute les éléments d'un array à l'objet courant
// exemple d'utilisation :
// var myArr = (new myArray()).init([1,2,3]);
myArray.prototype.init = function(array){
this.push.apply(this,array);
return this;
};
// correction de la méthode "concat" (qui renvoyait un array au lieu d'un myArray)
myArray.prototype.concat = function(){
var a = [].map.call(arguments,function(e){return e.toArray?e.toArray():e;});
return (new myArray()).init(a.concat.apply(this.toArray(),a));
}; |