D
DerMitSkill
Guest
Grade durch das eine OOP-Thema wieder auf den Geschmack gekommen.... kennt jemand ein gutes OOP-Tutorials... weil so richtig verstehe ich das auch nicht :mrgreen:
Danke
Danke
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
als Urheber diese Elaborats muss ich mal ein paar Fragen und Anmerkungen von mir geben
- document.testform.onsubmit -> name="" ist für lange missbilligt
- new Array() -> []
- Kein PascalCase für Objekte, wie es in JS üblich ist
- So wie dort beschrieben, macht man kein OOP mehr
ich arbeite bei JS immer mit new Array();Also unter Entwicklern denke ich wohl kaum das [] einem new Array(); vorgezogen wird schon allein wegen der lesbarkeit. wenn man schnell ein array machen will ala [1,2,3,4].funktionsaufruf(); isses ja ok aber wenn eine variable definiert wird sollte new Array(); geschrieben werden da weiß der entwickler nähmlich sofort was sache ist :-D
function MyObject (str) {
this._setFoo(str);
}
MyObject.prototype = {
alert : function (str) {
window.alert("Ausgabe: " + str);
},
foo : null
};
MyObject.prototype.quadrat = function (n) {
return n * n;
}
MyObject.prototype._setFoo = function () {
}
// usw.
There are two basic ways to create an empty object:
var obj = new Object();
And:
var obj = {};
These are semantically equivalent; the second is called object literal syntax, and is more convenient. Object literal syntax was not present in very early versions of the language which is why you see so much code using the old method.
also ich habe noch nie damit Probleme gehabt. Und alte Gewohnheiten wird man bekanntlich schlecht los.1. Ja seit XHTML 1.0 ist name="" missbilligt. Und eben weil man Scripte möglichst unabhängig vom HTML gestalten sollte, sollte man das gleich lassen. Name="" hat einfach zu viele Probleme.
Wie ich schon sagte, ich halte von Literalen nicht viel. Da find ich new Array() wesentlich übersichtlicher und vor Allem für Anfänger(!) verständlicher. Allerdings ist auch ein Tutorial zu diesem Thema geplant.2. ["foo", "bar"] statt new Array(). Die Literale gab es in frühen Implementationen (in den 90er) nicht, weshalb das weiterhin verbreitet ist. Sie sind kürzer und schneller
Ich weiss3. PascalCase war immer üblich: XMLHttpRequest, Window, Document, NodeList, HTMLInputElement, String, Date usw.
Ich weiss, machen viele. Und bei Arrays knallt es dann bei älterer Programmierung. Daher bin ich beim Prototyping sehr vorsichtig.4. this.foo in die Konstruktor-Funktion zu stecken ist zwar für viele Fälle noch angebracht, aber inzwischen steckt man alles in den Prototypen:
Ich weiss, steht auch hier: Peter Kropff - Tutorials - JavaScript - Arrays - Das dumme Objekt. Auch wenn es da noch ein wenig hakt mit den Details.https://developer.mozilla.org/en/A_re-introduction_to_JavaScript:
Ich zitiert's mal von Objekt, gilt aber auch für new Array():
Würde ich da unbedingt rausnehmen.mein_array = new Object ();
mein_array = Array ();
Wie ich schon sagte, dazu folgt irgendwann mal ein Tutorial.2. Dann kennen die Anfänger die Literale nicht und machen so ihren Code unübersichtlicher und langsamer.
Ich meinte das grundsätzliche Problem beim Prototyping. Also z.B. for ... in. Siehe auch hier: Peter Kropff - Tutorials - OOP/DOM-Scripting JavaScript - Anfängertutorial 2 - Einführung4. Mit Prototypen gibt es keine Probleme im IE. IE hat Probleme mit der DOM-Implementation und nur wenige Bugs in JScript, z.B. den length-Bug bei Arrays.
Laut Spezifikation ist es erlaubt. Auch wenn ich es selber noch nie benutzt habe.mein_array = new Object ();
mein_array = Array ();
Würde ich da unbedingt rausnehmen.
if (typeof Array.prototype.indexOf == "undefined") {
Array.prototype.indexOf = function (val) {
for (var i = 0, len = this.length, ele; i < len; i++) {
ele = this[i];
if (ele === val) {
return i;
}
}
return -1;
}
}