bleicher: kurznotation

Grüße,
ist eine sache die ich bisher nicht hinkriege -

bla={} //ein objekt  
  
bla={  
 methode:function(){}//object bla mit methode methode  
}

aber

  
bla={  
  
  methode:function(){  
      untermethode:function(){} //geht nciht  
  }  
}  

wie verschachtelt man in der kurznotation eine funktion in der funktion? geht das überhaupt?
MFG
bleicher

--
__________________________-

FirefoxMyth
  1. Lieber bleicher,

    wie verschachtelt man in der kurznotation eine funktion in der funktion? geht das überhaupt?

    Dein Vorhaben lässt sich nicht rein in JSON-Notation umsetzen. Eine Funktion ist ein Objekt des Typs "Funktionsobjekt". Seine Notation sieht so aus:

    var f = function () { ... }; // "..." steht für Funktionscode (=Programmcode)

    Programmcode ist nicht JSON-kompatibel. Außerdem hat ein Objekt des Typs "function" ganz besondere Eigenschaften und Methoden, die sich von einem "selbstgeschriebenen" Objekt ziemlich unterscheiden. Aber das geht über mein Wissen hinaus. Stichworte sind "private member" und sowas.

    bla={

    methode:function(){
          untermethode:function(){} //geht nciht
      }
    }

      
    Das müsste man in etwa so schreiben:  
      
    ~~~javascript
    var bla = {  
        methode : function () {  
        }  
    }  
      
    bla.methode.untermethode = function () {};
    

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Außerdem hat ein Objekt des Typs "function" ganz besondere Eigenschaften und Methoden, die sich von einem "selbstgeschriebenen" Objekt ziemlich unterscheiden.

      Ähm, nein.

      Aber das geht über mein Wissen hinaus.

      Nö, das ist ganz einfach. Ein Funktionsobjekt ist ein normales Objekt, das hat zwar ein paar spezifische Eigenschaften (z.B. length) und Methoden (z.B. call und apply), aber das funktioniert nicht anders als sonst in JavaScript.

      Stichworte sind "private member" und sowas.

      Private Members gibt es in JavaScript nicht - man kann höchstens Funktionen verschachteln, um mittels Closures so etwas ähnliches nachzubauen. Das sind dann aber keine besonderen Eigenschaft oder sowas, sondern das ist eine ganz andere, funktionale Umsetzung.

      Mathias

  2. methode:function(){
          untermethode:function(){} //geht nciht

    Was soll daran nicht gehen?

    Struppi.

    1. Lieber Struppi,

      methode:function(){
            untermethode:function(){} //geht nciht

      Was soll daran nicht gehen?

      bleicher wollte ein Konstrukt obj.methode.untermethode() nutzen können. Um dieses zu erstellen, wollte er in JSON die Struktur entsprechend notieren. Das obige Konstrukt definiert aber keine Funktion namens "untermethode", sondern eine anonyme Funktion, der ein Label "untermethode" vorausgeht.

      Oder habe ich da etwas falsch verstanden?

      Liebe Grüße,

      Felix Riesterer.

      --
      ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
      1. Was soll daran nicht gehen?

        bleicher wollte ein Konstrukt obj.methode.untermethode() nutzen können.

        Woher weiß du das? Das geht aus der Fragestellung nicht hervor. Daher mein Einwurf. Ich wollte Wissen was er denn eigentlich will.

        Das obige Konstrukt definiert aber keine Funktion namens "untermethode", sondern eine anonyme Funktion, der ein Label "untermethode" vorausgeht.

        Nein, ich hatte lediglich gefragt warum es nicht geht.

        Struppi.

  3. wie verschachtelt man in der kurznotation eine funktion in der funktion? geht das überhaupt?

    Nein, wieso willst du das?
    Klar, Funktionen sind Objekte und du kannst ihnen beliebige Eigenschaften, auch weitere Methoden, anhängen.
    Aber sollte man das wollen?

    Wenn du eine Funktion in einer anderen Funktion notieren willst - was etwas anderes ist, als Funktion B als Eigenschaft an Funktion A zu hängen -, dann tu dies doch einfach:

    o = {  
       f : function () {  
          function sub () {} // Ist nur in dieser Funktion verfügbar, nicht von außen  
          // ...  
          sub();  
       }  
    };
    

    Suchst du vielleicht eher das?

  4. Grüße,
    danke an alle :) schade, ich dachte man könne JSON konsequent durchnutzen - sieht sooo schick aus ;P
    MFG
    bleicher

    --
    __________________________-

    FirefoxMyth
    1. danke an alle :) schade, ich dachte man könne JSON konsequent durchnutzen - sieht sooo schick aus ;P

      Man kann JSON konsequent nutzen. Allerdings geht aus deiner Frage nicht wirklich hervor was du eigentlich machen willst.

      Struppi.

      1. Grüße,´

        Man kann JSON konsequent nutzen. Allerdings geht aus deiner Frage nicht wirklich hervor was du eigentlich machen willst.

        ich will ein object erstellen können, dessen methoden auch methoden haben :)

        beispiel:

        object Daten, hat methode Daten.speichern(); die wiederum soll methode Daten.speichern.setPath(); haben (als Beispiel).
        dabei wollte ich konsequent JSON nutzen damit es alles schön aussieht (keine weiteren gründe hierfür)
        MFG
        bleicher

        --
        __________________________-

        FirefoxMyth
        1. Man kann JSON konsequent nutzen. Allerdings geht aus deiner Frage nicht wirklich hervor was du eigentlich machen willst.

          ich will ein object erstellen können, dessen methoden auch methoden haben :)

          Dann musst du auch ein Objekt erstellen.

          beispiel:

          object Daten, hat methode Daten.speichern(); die wiederum soll methode Daten.speichern.setPath(); haben (als Beispiel).
          dabei wollte ich konsequent JSON nutzen damit es alles schön aussieht (keine weiteren gründe hierfür)

          Also so:

          object = {  
             speichern: {  
                setPath:function() {}  
             }  
          };  
          
          

          Struppi.

          1. Moin Moin!

            Man kann JSON konsequent nutzen. Allerdings geht aus deiner Frage nicht wirklich hervor was du eigentlich machen willst.

            ich will ein object erstellen können, dessen methoden auch methoden haben :)

            Dann musst du auch ein Objekt erstellen.

            Und genau an dem Punkt ist es kein JSON mehr. JSON kennt string, number, object, array, true,  false und null, alles ausschließlich Daten, kein Code. "object" ist eine ganz unglückliche Bezeichnung für ein assoziatives Array, die auf die enge Anlehnung an Javascript zurückzuführen ist. Aber auch "objects" enthalten ausschließlich Daten, keinen Code, insbesondere keine Methoden.

            In Javascript ist das durchaus möglich und gängige Praxis, um Objekte zu implementieren, aber nicht in JSON.

            "JSON [...] is a lightweight data-interchange format. [...] It is based on a subset of the JavaScript Programming Language [...]". Jeder JSON-Ausdruck ist damit gültiges Javascript, aber nicht jeder Javascript-Ausdruck ist gültiges JSON. JSON kennt beispielsweise auch keine Kommentare und keine Datumswerte.

            Alexander

            --
            Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
            1. Man kann JSON konsequent nutzen. Allerdings geht aus deiner Frage nicht wirklich hervor was du eigentlich machen willst.

              ich will ein object erstellen können, dessen methoden auch methoden haben :)

              Dann musst du auch ein Objekt erstellen.

              Und genau an dem Punkt ist es kein JSON mehr.

              Du hast natürlich recht. Aber ich denke, hier geht es weniger um das JSON Format, als um die literale Schreibweise von Objekten, die Bleicher fälschlicherweise als JSON bezeichnet.

              Struppi.