HighDots Forums  

JSON Syntax mit privaten Methoden und Funktionen

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss JSON Syntax mit privaten Methoden und Funktionen in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Markus Schulze
 
Posts: n/a

Default JSON Syntax mit privaten Methoden und Funktionen - 05-14-2007 , 02:37 AM






Moin!

Ich schaue mir gerade die JSON Syntax an und möchte diese gerne
zukünftig für meine Klassen bzw. Objekte verwenden. Was ich jedoch
nicht verstehe, ist die Definition von privaten Methoden und
Eigenschaften, wie kann ich diese unterscheiden?

Gruß
Markus


Reply With Quote
  #2  
Old   
Bjoern Hoehrmann
 
Posts: n/a

Default Re: JSON Syntax mit privaten Methoden und Funktionen - 05-14-2007 , 03:30 AM






* Markus Schulze wrote in de.comp.lang.javascript:
Quote:
Ich schaue mir gerade die JSON Syntax an und möchte diese gerne
zukünftig für meine Klassen bzw. Objekte verwenden. Was ich jedoch
nicht verstehe, ist die Definition von privaten Methoden und
Eigenschaften, wie kann ich diese unterscheiden?
JSON Syntax ist JavaScript Syntax, und JSON unterstützt Methoden gar
nicht; was JavaScript angeht gibt es derzeit keine Möglichkeit die
Sichtbarkeit von Feldern zu beeinflussen, du musst auf Konventionen
ausweichen, z.B. einen führenden "_" für privates verwenden.
--
Björn Höhrmann · mailto:bjoern (AT) hoehrmann (DOT) de · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/


Reply With Quote
  #3  
Old   
Markus Schulze
 
Posts: n/a

Default Re: JSON Syntax mit privaten Methoden und Funktionen - 05-15-2007 , 06:53 AM



On 14 Mai, 10:30, Bjoern Hoehrmann <bjo... (AT) hoehrmann (DOT) de> wrote:

Moin Bjoern,

Quote:
JSON Syntax ist JavaScript Syntax, und JSON unterstützt Methoden gar
nicht; was JavaScript angeht gibt es derzeit keine Möglichkeit die
Sichtbarkeit von Feldern zu beeinflussen, du musst auf Konventionen
ausweichen, z.B. einen führenden "_" für privates verwenden.
vielen Dank für den Tipp, jetzt wird mir doch einiges klarer!

Bei meiner Suche nach Syntax beispielen bin ich in Verbindung mit
Prototype auf folgendes gestossen:


var meineKlasse = Class.create();

meineKlasse.prototype = {
eigenschaft : "variable",
initialize: function()
{
// Konstruktor
},

methode: function()
{
// mache was
}
}


Das sieht ja schon elegant aus. Vor allem der Konstruktor vereinfacht
vieles.

Aber durch die Verwendung von Prototype habe ich mir hiermit
"statische Eigenschaften" erstellt, welches nicht gewollt ist, wenn
ich anschliessend ein Array aus meiner Klasse erstellen möchte.

Vielleicht noch einen Tipp, wie ich das ändern muß, ohne auf den
Konstruktor verzichten zu müssen?

Gruß
Markus



Reply With Quote
  #4  
Old   
Georg Maaß
 
Posts: n/a

Default Re: JSON Syntax mit privaten Methoden und Funktionen - 05-19-2007 , 10:34 AM



Gregor Kofler wrote:
Quote:
Ein JS-Konstruktor schaut so aus:

foo = new bar();

function bar() { ... }
Auch dieses bar ist nur dann ein Konstruktor im Unterschied zu einer
Factory, wenn es keinen Rückgabewert hat.

Sobald bar einen Rückgabewert liefert, arbeitet es nur noch als Factory
und initialisiert nicht mehr das mit new erzeugte Objekt.

IMO
Quote:
machen Properties beim Prototypen (abgesehen von Ausnahmen wie
Identifizierungs- oder Versionsstrings) eh keinen Sinn.
Doch, wenn sie nur gelesen und nicht verändert werden. Sie haben aber
auch als veränderliche Properties einen Sinn, wenn es sich um Objekte
handelt, die dann nämlich shared sind, solange nur deren Eigenschaften
verändert werden und nicht die Referenz selbst.

Daß diese Leute ihre Bibliothek ausgerechnet Prototype genannt haben,
ist sehr unglücklich, denn das vermehrt noch zusätzlich die Verwirrung
um den leistungsfähigen Prototypen-Mechanismus von JavaScript.


Reply With Quote
  #5  
Old   
Markus Schulze
 
Posts: n/a

Default Re: JSON Syntax mit privaten Methoden und Funktionen - 05-22-2007 , 03:48 AM



On 19 Mai, 17:34, Georg Maaß <g... (AT) bioshop (DOT) de> wrote:

Moin!

Jetzt bitte nochmal ganz langsam für mich:

meineKlasse.prototype = {

methode: function()
{
// mache was
}

}


.... definiert eine "statische Methode".

var myKlasse1 = new meineKlasse();
var myKlasse2 = new meineKlasse();

Nur wie stelle ich jetzt sicher, das die beiden Klassen ihre eigenen
Variablen bekommen ?

Gruß
Markus


Quote:
Gregor Kofler wrote:
Ein JS-Konstruktor schaut so aus:

foo = new bar();

function bar() { ... }

Auch dieses bar ist nur dann ein Konstruktor im Unterschied zu einer
Factory, wenn es keinen Rückgabewert hat.

Sobald bar einen Rückgabewert liefert, arbeitet es nur noch als Factory
und initialisiert nicht mehr das mit new erzeugte Objekt.

IMO

machen Properties beim Prototypen (abgesehen von Ausnahmen wie
Identifizierungs- oder Versionsstrings) eh keinen Sinn.

Doch, wenn sie nur gelesen und nicht verändert werden. Sie haben aber
auch als veränderliche Properties einen Sinn, wenn es sich um Objekte
handelt, die dann nämlich shared sind, solange nur deren Eigenschaften
verändert werden und nicht die Referenz selbst.

Daß diese Leute ihre Bibliothek ausgerechnet Prototype genannt haben,
ist sehr unglücklich, denn das vermehrt noch zusätzlich die Verwirrung
um den leistungsfähigen Prototypen-Mechanismus von JavaScript.



Reply With Quote
  #6  
Old   
Brian Finn
 
Posts: n/a

Default Re: JSON Syntax mit privaten Methoden und Funktionen - 05-23-2007 , 03:09 AM



Hi!

Private und öffentliche Eigenschaften kann man so realisieren:

Öffentliche Eigenschaften:

objekt = new Object();
objekt.eigenschaft = irgendwas;

eigenschaft kann nun von überall gelesen werden.



Private Eigenschaft:

function objekt(){
var eigenschaft = irgendwas;

function Funktion1() {
eigenschaft kann nur in dieser Funktion gelesen werden...
}

}


MfG

Brian


--
Mit dem ersten Glied ist die Kette geschmiedet.
Wenn die erste Rede zensiert,
der erste Gedanke verboten,
die erste Freiheit verweigert wird,
sind wir alle unwideruflich gefesselt.
(Jean-Luc Picard)



Reply With Quote
  #7  
Old   
Brian Finn
 
Posts: n/a

Default Re: JSON Syntax mit privaten Methoden und Funktionen - 05-23-2007 , 06:48 PM



"Georg Maaß" <georg (AT) bioshop (DOT) de> schrieb im Newsbeitrag news:4654aa31$0$20288$9b4e6d93 (AT) newsspool3 (DOT) arcor-online.net...
Quote:
Brian Finn wrote:

Private Eigenschaft:

function objekt(){
var eigenschaft = irgendwas;

function Funktion1() {
eigenschaft kann nur in dieser Funktion gelesen werden...
}

}

Das ist keine Private Eigenschaft, sondern die Konstruktion ist eine Closure.

In diesem Beispiel ist auch Funktion1 weggesperrt, weil es keinem öffentlichen Objekt zugewiesen wird.
Ein Closure ist einer privaten Eigenschaft aber am ähnlichsten, oder?

Hier nochmal ein Beispiel, welches besser paßt (diesmal auch getestet):


function objekt() {

var test = 0;

objekt.prototype.increment = function () {
test++;
return test;
}
}

var x = new objekt;

alert("x:" + x.increment());
alert("x:" + x.increment());

var y = new objekt();

alert("y:" + y.increment());
alert("y:" + y.test);

Hab ich noch irgendwas übersehen? ;-)

MfG

Brian

--
Mit dem ersten Glied ist die Kette geschmiedet.
Wenn die erste Rede zensiert,
der erste Gedanke verboten,
die erste Freiheit verweigert wird,
sind wir alle unwideruflich gefesselt.
(Jean-Luc Picard)




Reply With Quote
  #8  
Old   
Brian Finn
 
Posts: n/a

Default Re: JSON Syntax mit privaten Methoden und Funktionen - 05-26-2007 , 05:56 PM



"Georg Maaß" <georg (AT) bioshop (DOT) de> schrieb im Newsbeitrag news:4657ff9e$0$23133$9b4e6d93 (AT) newsspool1 (DOT) arcor-online.net...
Quote:
Brian Finn wrote:

Das hier meinst Du doch nicht ernst.

Bei jeder neuen Instanz änderst Du den Prototypen. Als Ergebnis verwenden alle Instranzen einen gemeinsamen Zähler, der mit
jeder neunen Instanz auf 0 zurückgesetzt wird.

So etwas kriegst Du mit privaten Eigenschaften etc. nicht hin. Es ist eben Closure Magic. Wenn Du das dann auch noch mit Settern
und Gettern kombinierst ...
Hmm. Stimmt. Habs mir nochmal genauer angesehen, was ich da gemacht habe...
Geht so wohl doch nicht.
Ich meine, ich hätte aber schon mal so ein ähnliches Beispiel dazu gesehen.

MfG

Brian

--
Mit dem ersten Glied ist die Kette geschmiedet.
Wenn die erste Rede zensiert,
der erste Gedanke verboten,
die erste Freiheit verweigert wird,
sind wir alle unwideruflich gefesselt.
(Jean-Luc Picard)




Reply With Quote
  #9  
Old   
Brian Finn
 
Posts: n/a

Default Re: JSON Syntax mit privaten Methoden und Funktionen - 05-27-2007 , 03:15 AM



So, dritter Versuch! :-)

Die Idee mit dem Prototype war dumm, aber so dürfte es nun funktionieren.


function objekt() {

var count = 0;

function inc(){
count++;
return count;
}

this.inc = inc;
}

Oder hab ich wieder was übersehen?

MfG

Brian

--
Mit dem ersten Glied ist die Kette geschmiedet.
Wenn die erste Rede zensiert,
der erste Gedanke verboten,
die erste Freiheit verweigert wird,
sind wir alle unwideruflich gefesselt.



Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.