1/** 2 * Methode zum ermöglichen einer Vererbung in JavaScript 3 * @param {Object} subClass 4 * @param {Object} superClass 5 */ 6function extend(subClass, superClass) 7{ 8 var F = function() {}; // leere Funktion / Objekt / Klasse(?) erstellen 9 F.prototype = superClass.prototype; // neues Klassenobjekt zeigt mit prototype-Attribut auf die Superklasse 10 subClass.prototype = new F(); // Subklasse zeigt auf neue Instanz von neuer Klasse 11 subClass.prototype.constructor = subClass; // Subklassen-Konstruktor zeigt auf Subklasse (welche letztlich eine Konstruktor-Funktion ist) 12 13 subClass.superclass = superClass.prototype; // Subklasse referenziert Superklasse über das superclass-Attribut. Damit ist es auch möglich bereits überschriebene Methoden aus der Superklasse zu erreichen. 14 if(superClass.prototype.constructor == Object.prototype.constructor) { 15 superClass.prototype.constructor = superClass; 16 } 17}; 18 19// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // 20// Erweiterungen von bestehenden Klassen/Objekten/Strukturen 21// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // 22 23/** 24 * Erweitert das Array-Objekt um eine Methode zum Löschen 25 * 26 * @param {Object} from 27 * @param {Object} to 28 */ 29Array.prototype.remove = function(from, to) 30{ 31 try 32 { 33 var rest = this.slice((to || from) + 1 || this.length); 34 this.length = from < 0 ? this.length + from : from; 35 return this.push.apply(this, rest); 36 } 37 catch (e) 38 { 39 return null; 40 } 41}; 42 43 44/** 45 * Erweitert das Array-Objekt um eine Methode zum Löschen 46 * 47 * @param object Das Object was gelöscht werden soll 48 * @return The removed item. 49 */ 50Array.prototype.removeObject = function (object) 51{ 52 this.removeAt(this.indexOf(object)); 53 return object; 54}; 55 56/** 57 * Erweitert das Array-Objekt um eine Methode zum Löschen 58 * @param index Der Index des Objekts welches gelöscht werden soll. 59 * @return The removed item. 60 */ 61Array.prototype.removeAt = function (index) 62{ 63 var object = this[index]; 64 if (object) 65 { 66 this.splice(index, 1); 67 } 68 return object; 69}; 70 71/** 72 * Erweitert das Array-Objekt um eine Methode zum Einfügen. 73 * Ein Element kann vor einem anderen Element in einem Array eingefügt werden. 74 * @param {Object} elementToInsertBefore 75 * @param {Object} element 76 */ 77Array.prototype.insertBefore = function(elementToInsertBefore, element) 78{ 79 var index = this.indexOf(elementToInsertBefore); 80 if(index > -1) 81 this.insertAt(index,element); 82} 83 84/** 85 * Erweitert das Array-Objekt um eine Methode zum Einfügen. 86 * Ein Element kann vor einem anderen Element in einem Array eingefügt werden. 87 * @param {Object} elementToInsertAfter 88 * @param {Object} element 89 */ 90Array.prototype.insertAfter = function(elementToInsertAfter, element) 91{ 92 var index = this.indexOf(elementToInsertAfter); 93 if(index > -1) 94 this.insertAt(index+1,element); 95} 96 97/** 98 * Erweitert das Array-Objekt um eine Methode zum Einfügen. 99 * Fügt ein Element in einem Array an der übergebenen Index ein 100 * @param {Object} index 101 * @param {Object} element 102 */ 103Array.prototype.insertAt = function (index, element) 104{ 105 this.splice(index, 0, element); 106}; 107 108if(!Array.indexOf) 109{ 110 /** 111 * Im Mozilla 1.8 gibt es diese Funktion bereits, deshalb befindet sich die Methoden-Deklaration 112 * in einem if-Konstrukt. 113 * Gibt den ersten Index zurück an der das übergebene Objekt gefunden wurde. 114 * @param object 115 * @param startIndex Optionaler Index-Parameter. Ab diesem Index wird die Suche begonnen. 116 * @return Gibt -1 zurück wenn das Objekt nicht gefunden wurde. 117 */ 118 Array.prototype.indexOf = function(object , startIndex ) 119 { 120 if(startIndex == null) 121 { 122 startIndex = 0; 123 } 124 125 for(var i=startIndex, l=this.length; i < l; i++) 126 { 127 if(this[i] == object) 128 { 129 return i; 130 } 131 } 132 return -1; 133 }; 134};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.