Struppi: Weblog-Artikel: Der sinnvolle Einsatz von JavaScript

Beitrag lesen

Ich halte das für z.T. fortgeschrittene Programmierung. Dann müßte auch in Perl dieses Thema wesentlich weiter erläutert werden. Aber ich denke selfHTML will und kann das nicht bieten.
SELFHTML hat ja auch den anspruch HTML oder CSS vollständig zu dokumentieren, warum nicht JS?

Keine Ahnung, aber ich würde es so sehen, dass es hier um spezielle Programmiertechniken geht, die man ohne eine gewissen Erfahrung gar nicht verstehen kann.

Es geht hier auch nicht um die Dokumentation irgendwelcher Zusatzfunktionen von Gecko oder IE, sondern um ganz grundlegende Spracheigenschaften. Die sollten schon dokumentiert sein.

Naja, teilweise stimme ich dir zu. Aber teilweise sind diese speziellen Konstrukte unter JS nur nötig um bestimmte OO Ansätze zu realisieren (z.b. private Variabeln), d.h. man muss erst Wissen wie man OO programmiert um verstehen zu können warum man private Variabeln und Funktionen überhaupt haben möchte. es geht also viel weiter. Ich seh das so, in der Fahrschule bringt dir ja auch keiner Rennauto fahren bei.

Ich persönlich hasse Dokumentationen, die mir so einen schwammigen Überblick geben, aber nicht wirklich verraten, wie die Dinge funktionieren. Man hat dauernd das Gefühl, da wird versucht, etwas zu verheimlichen, damit man nicht auch so gut wird, wie die, die das geschrieben haben ;-)

Es dürfte eher so sein, dass es schwierig ist allen gerecht zu werden. (auch ein Grund warum ich noch nie was für selfhtml geschaftt habe zu schreiben, entweder ich verlier mich im Detail oder mein Wissen ist nicht fundiert genug)

Zu diesem Beispiel:

function obj1() {
    this.abc = "123";
    this.bla = function() {
        alert(this.abc)
    }
};

var a = new obj1();
var b = a.bla;
b();


>   
> Damit wollte ich Jeena veranschaulichen, wie eigentlich die Bindung von Methoden an Objekte funktioniert.  
> Dass der Funkionsaufruf b() nicht mehr im Kontext des in a gespeicherten Objektes arbeitet, ist nicht unbedingt natürlich.  
  
Doch, du weist b hier lediglich die Referenz auf die Funktion zu, diese ist in JS nie an ein Objekt gebunden, sondern erst durch die Art wie du sie aufrufst kannst du erkennen zu welchem Objekt sie gehört.  
  
Letzlich ist es das gleiche wie das:  
~~~javascript
  
function obj1() {  
     this.abc = "123";  
     this.bla = bla_func;  
};  
function bla_func()  
{  
    alert(this.abc)  
}  
  
var a = new obj1();  
var b = a.bla;  
b();  

Die bla_func ist hier wie auch in deinem Fall völlig lösgelöst vom Objekt.

Struppi.