kostenloser Webspace werbefrei: lima-city


JS: Schreibgeschützte Eigenschaften

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    m******s

    Moin,

    wollte mal fragen, ob es unter Javascript die Möglichkeit gibt, Benutzerdefinierten Objekten Schreibgeschützte Eigenschaften zu geben?

    Also, wenn man so etwas macht:

    function myObj()
    {
        this.prop = \'bla\';
    }


    Kann man jederzeit darauf zugreifen und sie verändern. Macht man so was wie

    function myObj()
    {
        this.prop = function()
        {
            return bla;
        };
    }


    Muss man die immer mit
    var test = new myObj();
    test.prop();
    aufrufen. Mir wäre am liebsten ein Weg, um sozusagen eine Funktion, ohne die Klammern aufzurufen. Also quasi obigen Code mit
    var variable = test.prop;
    aufrufen können. Der Grund ist, dass ich Dinge als Eigenschaften definieren will, aber Code ausführen muss, wenn diese Eigenschaft geändert wurde. Und irgendwie sind diese Klammern nasty ;) Soll schließlich als Eigenschaft erscheinen...

    Also, wenn jemand etwas wüsste wäre ich froh. Hoffe konnte mein Problem darstellen.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich habe gerade nochmal in den entsprechenden Standard reingeschaut ( http://www.ecma-international.org/publications/standards/Ecma-262.htm ) und dort wird auch beschrieben, dass eine Objekteigenschaft ReadOnly sein kann.
    Ich habe jedoch nicht nicht herausgefunden, mit welcher Syntax dies erreicht werden kann.

    Oder möchtest du einfach die Veränderung einer Variable überwachen?
    In dem Fall kommst du wahrscheinlich nicht an Funktionen vorbei.

    In JavaScript gibt es im Gegensatz zu Java leider auch nicht die Eigenschaften public, protected und private (eigentlich gibt es sie schon, aber sie sind nur reservierte Wörter, die keine Wirkung haben), mit denen du eine Klasse gegen Fremdzugriffe schützen könntest.

    edit: Test

    Beitrag geändert: 13.7.2008 19:40:12 von bladehunter
  4. Autor dieses Themas

    m******s


    Oder möchtest du einfach die Veränderung einer Variable überwachen?
    In dem Fall kommst du wahrscheinlich nicht an Funktionen vorbei.


    Wäre vollkommen i.O., wenn ich das könnte... also ginge so etwas nur über Funktionen, die sich nur als Eigenschaften \"tarnen\"? Aber dann kommt man auch nicht an den Klammern vorbei? Dassja dov... Wiesoo machen die das nicht wie bei .NET, wo man für die Properties extra Get und Set-Funktionen implementieren muss? :biggrin: wäre viel kuhler - wenn auch umständlicher :biggrin:
  5. Naja, ich finde getter- und setter-Funktionen irgendwie doof. In einigen Fällen mögen sie sinnvoll sein, aber wenn man nur

    getValue()
    {
    return Value;
    }

    hat, dann ist das übertrieben und kostet unnötige Sprünge im Code.

    In C/C++ würde man sowas ohnehin inlinen :tongue:
  6. Autor dieses Themas

    m******s


    Naja, ich finde getter- und setter-Funktionen irgendwie doof. In einigen Fällen mögen sie sinnvoll sein, aber wenn man nur

    getValue()
    {
    return Value;
    }

    hat, dann ist das übertrieben und kostet unnötige Sprünge im Code.

    In C/C++ würde man sowas ohnehin inlinen :tongue:


    .NET ermöglicht theoretisch auch die einfache public-Deklaration von Variablen, dann spart man sich die Arbeit, eine Get und Set-funktion zu schreiben. Dennoch führt es halt zu mehr Fexibilität und saubereren Ergebnissen (Weil Probleme wie meins, dass etwas wie die Berite eines Elements, was ja eindeutig eine Eigenschaft ist, als Funktion gegeben ist).

    Egal, b2t, vielleicht hat ja doch noch irgendwer ein Workaround?
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!