toolkit/javascript/d3/src/core/array.js
changeset 47 c0b4a8b5a012
equal deleted inserted replaced
46:efd9c589177a 47:c0b4a8b5a012
       
     1 var d3_array = d3_arraySlice; // conversion for NodeLists
       
     2 
       
     3 function d3_arrayCopy(pseudoarray) {
       
     4   var i = -1, n = pseudoarray.length, array = [];
       
     5   while (++i < n) array.push(pseudoarray[i]);
       
     6   return array;
       
     7 }
       
     8 
       
     9 function d3_arraySlice(pseudoarray) {
       
    10   return Array.prototype.slice.call(pseudoarray);
       
    11 }
       
    12 
       
    13 try {
       
    14   d3_array(document.documentElement.childNodes)[0].nodeType;
       
    15 } catch(e) {
       
    16   d3_array = d3_arrayCopy;
       
    17 }
       
    18 
       
    19 var d3_arraySubclass = [].__proto__?
       
    20 
       
    21 // Until ECMAScript supports array subclassing, prototype injection works well.
       
    22 function(array, prototype) {
       
    23   array.__proto__ = prototype;
       
    24 }:
       
    25 
       
    26 // And if your browser doesn't support __proto__, we'll use direct extension.
       
    27 function(array, prototype) {
       
    28   for (var property in prototype) array[property] = prototype[property];
       
    29 };