private Methoden in Literal-Objekten

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • private Methoden in Literal-Objekten

    ein Literal sieht ja einfach gesagt so aus:
    PHP Code:
    var bla 
    {
      
    blubb 'blubber',
      
    laber: function()
      {
        
    alert (this.blubb);
      }
    }
    bla.laber(); 
    nun ist die methode laber öffentlich zugänglich. wie sähe sie aus, damit man nur innerhalb des literals darauf zugreifen kann. hatte was mit this.laber = function im kopf, aber das war es nicht. geht das überhaupt?

    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

  • #2
    Mit this.irgendwas erstellst du öffentliche Methoden. Die Wikipedia hat ein gutes Beispiel, wie du private Methoden erstellen kannst.

    Comment


    • #3
      Originally posted by PHP-Desaster View Post
      Mit this.irgendwas erstellst du öffentliche Methoden. Die Wikipedia hat ein gutes Beispiel, wie du private Methoden erstellen kannst.
      das weiß ich alles schon, aber hier geht es um literal-objekte, und da sieht die sache ein wenig anders aus ;-)

      peter

      OT: hier sind schon wieder ein paar smiles hops gegangen
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Comment


      • #4
        Ah, dann meinst du mit Literal-Objekten solch eine JSONotation. Da gibt es afaik keine Möglichkeit, sowas wie private Methoden zu erstellen.

        Comment


        • #5
          Originally posted by PHP-Desaster View Post
          Ah, dann meinst du mit Literal-Objekten solch eine JSONotation. Da gibt es afaik keine Möglichkeit, sowas wie private Methoden zu erstellen.
          ich glaube, da gab es eine etwas krude möglichkeit. bin mir aber nicht mehr sicher.

          trotzdem danke
          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Comment


          • #6
            Das macht ehrlich gesagt keinen Sinn. Du brauchst einen Konsruktor mit Prototyp um eine private funktion zu erstellen. Das heisst du musst entweder eine Funktion benutzen oder ein, wie du es nennst, literales Objekt erstellen und im Nachhinein einen Konstruktor und einen Prototyp anfügen.

            Comment


            • #7
              das geht auch so:
              Code:
              function obj(){
                  var private_var = 42;
                  function private(){return private_var;}
                  function protected(){return private();}
                  return {protected:protected};
              }
              
              var o = obj();
              o.protected(); // 42
              o.private(); // TypeError
              o.private_var; // undefined
              edit: um das alles mehr 'literal' zu machen:
              Code:
              var o = (function (another_private){
                  var private_var = 42;
                  function private(){return private_var;}
                  function protected(){return private();}
                  return {protected:protected};
              })("parameter");
              Last edited by frodenius; 15-05-2009, 10:49.
              blllubb

              Comment


              • #8
                Originally posted by frodenius View Post
                das geht auch so:
                Code:
                function obj(){
                    var private_var = 42;
                    function private(){return private_var;}
                    function protected(){return private();}
                    return {protected:protected};
                }
                
                var o = obj();
                o.protected(); // 42
                o.private(); // TypeError
                o.private_var; // undefined
                das weiß ich doch. hier geht es speziell um literal-objekte

                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Comment


                • #9
                  Hi,

                  mit einem reinen Objektliteral ist das afaik nicht möglich. Mir fällt da nur die Lösung über einen Container ein.

                  LG

                  Comment


                  • #10
                    Originally posted by kuddeldaddeldu View Post
                    mit einem reinen Objektliteral ist das afaik nicht möglich. Mir fällt da nur die Lösung über einen Container ein.LG
                    Und ausgerechnet in dem Artikel verlinken sie auf mich . Aber das ist ja wirklich krank. Ein Literal innerhalb eines "Klassen"-Objektes. Trotzdem genau das, was ich gesucht habe. Danke! Und jetzt kann ich wieder alles umprogrammieren. Danke!

                    Peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Comment


                    • #11
                      Originally posted by Kropff View Post
                      das weiß ich doch. hier geht es speziell um literal-objekte

                      peter
                      ??
                      wie ist der selfhtml-kram anders als das was ich gepostet habe?
                      blllubb

                      Comment


                      • #12
                        Originally posted by frodenius View Post
                        ??
                        wie ist der selfhtml-kram anders als das was ich gepostet habe?
                        als literal sähe das in etwa so aus:
                        PHP Code:
                        var obj
                        {
                          
                        public_var 42,
                          
                        publicFunc : function ()
                          {
                            return 
                        this.public_var;
                          }
                        }
                        bla obj.publicFunc(); 
                        nur dass es in dem fall keine "privaten" methoden und eigenschaften gibt.

                        peter
                        Last edited by Kropff; 16-05-2009, 14:07.
                        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                        Meine Seite

                        Comment


                        • #13
                          ... deswegen kommt ja das (function(){return ;})() drum herum.
                          blllubb

                          Comment


                          • #14
                            Originally posted by frodenius View Post
                            ... deswegen kommt ja das (function(){return ;})() drum herum.
                            ist imho aber kein literal.

                            peter
                            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                            Meine Seite

                            Comment

                            Working...
                            X