Struktur / Klasse eindeutig identifizieren

H4rv3y

Grünschnabel
Hi,

wie der Titel schon sagt, stehe ich vor dem Problem eine Struktur bzw. Klasse eindeutig zu identifizieren. Meine erste Idee war, das Ganze über eine Konstante zulösen.

HTML:
function meineKlasse(){
   this.Klassenname = "meineKlasse";
}

So würde das zwar gehen, aber der Klassenname wäre veränderbar. Man könnte es auch über eine function lösen.

HTML:
function meineKlasse(){
   this.Klassenname = function(){return "meineKlasse";};
}

Hier habe allerdings das Problem, dass die Ausführung des Javascriptcodes stoppt, wenn ich eine function aufrufe, die nicht existiert.
Was ich also bräuchte wäre eine read-only Variable, welche beim Erstellen des Objekts der Klasse gesetzt wird.
Falls es eine andere Möglichkeit gibt (als eine Konstante) ist mir das auch recht, hauptsache ich kann erkennen ob ein Objekt vom Typ der Klasse ist.

Danke schonmal im Vorraus für die Antworten,

Gruß H4rv3y

P.S.: Ich möchte mich an der Stelle nochmal bei CPoly bedanken, ich hatte diesen Beitrag in ein "etwas" älteres Thema geposten (hab das Datum überlesen :D).
 
Du kannst mit Object.defineProperty() arbeiten:
Javascript:
function FileObject () {
  var READ    = 1;
  var WRITE   = 2;
  var EXECUTE = 4;

  this.getConst = function (name) {
    switch (name) {
      case "READ": return READ;
      case "WRITE": return WRITE;
      case "EXECUTE": return EXECUTE;
    }
  };

  Object.defineProperty(this, "READ", {
    set: function (value) {},
    get: function () {
      return this.getConst("READ");
    }
  });

  Object.defineProperty(this, "WRITE", {
    set: function (value) {},
    get: function () {
      return this.getConst("WRITE");
    }
  });

  Object.defineProperty(this, "EXECUTE", {
    set: function (value) {},
    get: function () {
      return this.getConst("EXECUTE");
    }
  });
}

file = new FileObject;
file.WRITE; // returns 2
file.WRITE = 5; // returns 5
file.WRITE; // returns 2
 
Mir ist gerade aufgefallen, dass es noch eine bessere Möglichkeit gibt:
Javascript:
function FileObject () {
  Object.defineProperty(this, "READ", {
    value: 1,
    writeable: false
  });

  Object.defineProperty(this, "WRITE", {
    value: 2,
    writeable: false
  });

  Object.defineProperty(this, "EXECUTE", {
    value: 4,
    writeable: false
  });
}
 

Neue Beiträge

Zurück