Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
this und OOP [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
this und OOP


 
Kropff
19-08-2010, 21:20 
 
Ich stehe gerade vor einem großen Verständnisproblem. Dazu folgender Code:
function bla ()
{
this.publ = "öffentlich";
this.publicMethod = function ()
{
privateMethode();
}
function privateMethode ()
{
alert(this.publ);
}
}
var obj = new bla();
obj.publicMethod();
Der alert gibt hier ein undefined aus. Das liegt daran, dass this in diesem Fall auf window verweist. Könnt ihr ganz einfach mit
alert(this);
sehen. Aber warum? Was ist der Sinn dahinter? In einer "öffentlichen" Methode kann ich auf die "öffentliche" Eigenschaft publ zugreifen:
this.publicMethod = function ()
{
alert(this.publ);
}

Waum ist das bei "privaten" Methoden nicht möglich. Statt dessen hänge ich auf einmal im window-Objekt herum.

Peter

 
AmicaNoctis
19-08-2010, 21:44 
 
Hallo Peter,

in JS gibt es kein öffentlich und privat wie z. B. in PHP. Deine „private“ Methode ist einfach eine Closure und ihr this bezieht sich auf ihren eigenen Scope. Den kannst du jedoch auch gezielt übertragen, wenn du publicMethod umschreibst:

this.publicMethod = function ()
{
privateMethode.call(this);
}


Dann wird privateMethode im Scope deines Objekts aufgerufen und ihr this ist dann dasselbe.

Gruß,

Amica

 
Kropff
19-08-2010, 21:51 
 
Ach, ich werde diese Sprache nie ganz begreifen :confused:. An den Closures sitze ich gerade dran. Bin also jetzt schon ein Stück weiter.

Danke Schatzi :)
Peter

 
wahsaga
26-08-2010, 14:36 
 
Weiß nicht, ob du die SELFHTML Aktuell Artikel kennst, aber für ein etwas tieferes Verständnis von solchen JavaScript-Spezifika sind folgende sehr aufschlußreich:

Organisation von JavaScripten (http://aktuell.de.selfhtml.org/artikel/javascript/organisation/)
Objekt-Handling in JavaScript (http://aktuell.de.selfhtml.org/artikel/javascript/oomodell/)

 
Kropff
26-08-2010, 14:42 
 
Ich bin mittlerweile auch schon sehr viel weiter. Vielleicht werde ich diese Sprache ja doch noch begreifen. Man darf beim Lernen nur nie an PHP und OOP denken. :)

Peter

 
h3ll
27-08-2010, 00:12 
 
Ist das hier alltagstauglich oder eher zu vermeiden?

function myClass {
var that = this;

var foo = function() {
that.bar();
};

this.bar = function() {
alert('foobar!');
};
}

 
AmicaNoctis
27-08-2010, 00:20 
 
Ist das hier alltagstauglich

Ja, besonders in solchen Fällen wie dem gezeigten, der sich mit Closures nur umständlich und schwer lesbar realisieren lassen würde.[/CODE]


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:47 Uhr.