[JavaScript] Prototyping

function Person(name) {
  this.Vorname = name;
}

// p1 -> Attribut "Alter" für nur dieses Objekt
let p1 = new Person("Ede");
p1.Alter = 60;
console.log(p1.Vorname + " " + p1.Alter);

// p2 -> hat keinen Attribut "Alter"
let p2 = new Person("Horst");
console.log(p2.Vorname + " " + p2.Alter);

// neue Eigenschaft im Prototyp ("Basisklasse") für alle Personen hinzufügen
Person.prototype.Alter = 70;

// p2 hat nun auch ein Attribut "Alter"
console.log(p2.Vorname + " " + p2.Alter);

[JavaScript] Daten im lokalen Zwischenspeicher ablegen

// dauerhaft im lokalen Dateisystem mit localStorage
// Speichern
localStorage.setItem("name", "Udo");
// Lesen
console.log(localStorage.getItem("name"));

// für die Laufzeit der Session (solange der Browsertab offen ist) im lokalen Dateisystem mit sessionStorage
// Speichern
sessionStorage.setItem("name", "Udo");
// Lesen
console.log(sessionStorage.getItem("name"));

[JavaScript] Gleichheit

Strikte Gleichheit (‘===’)

  • prüft zwei Werte auf Gleichheit
  • ohne Konvertierung
let num = 0;
let obj = new String('0');
let str = '0';
let b = false;

// false
console.log(b === obj);
// false
console.log(num === b); 
// false
console.log(num === str);
// false
console.log(str === 1);
// false
console.log(obj === 1);
// true
console.log(num === 0);
// false
console.log(num === 1);

Lose Gleichheit (‘==’)

  • vergleicht zwei Werte auf Gleichheit
  • mit vorheriger Konvertierung zum gleichen Typ
let num = 0;
let obj = new String('0');
let str = '0';
let b = false;

// true
console.log(b == obj);
// true
console.log(num == b);
// true
console.log(num == str);
// false
console.log(str == 1);
// false
console.log(obj == 1);
// false
console.log(num == 1);
// true
console.log(num == 0);

Weiterführende Infos: Link

[JavaScript] Eine Klasse definieren

Klassendefinition ab ES6

// https://javascript.info/class
// https://javascript.info/property-accessors
class Rechteck
{
  // Konstruktor
  constructor(h, b) {
    this.h = h;
    this.b = b;
  }
   
  // public Properties
  get flaeche() {
    return this.Flaeche();
  }
 
  set hoehe(value) {
    this.h = value;
  }
  
  set breite(value) {
    this.b = value;
  }
  
  // public Methoden
  Flaeche() {
    return this.h * this.b;
  }
  
  // statische Methoden
  static Calc(h, b) {
    return h * b;
  }
}
 
const q = new Rechteck(10, 10);
 
console.log(q.flaeche);
q.hoehe = 5;
console.log(q.Flaeche());
console.log(Rechteck.Calc(2, 3));
console.log(Object.getOwnPropertyNames(Rechteck.prototype));

herkömmlich über “function”

function Rechteck(h, b)
{ 
    this.h = h;
    this.b = b;
   
    Rechteck.prototype.Flaeche = function() {
      return this.h * this.b;
    }
}
 
let q = new Rechteck(10, 10);
 
console.log(q.Flaeche());
console.log(Object.getOwnPropertyNames(Rechteck.prototype));