Types¶
Alle im Framework definierten generellen Typen, Objekte, Strukturen sind im Namespace Alvine.Types zusammengefasst.
Version¶
Mit Hilfe des Versionsobjektes lässt sich die Version des Frameworks abfragen und gegen eine Mindestanforderung prüfen.
// Neue Version aus Zeichenkette erstellen
version = new Alvine.Types.Version('3.2.1');
// Neue Version aus integer erstellen
version = new Alvine.Types.Version(3,2,1);
//Nur Hautversionsnummer (ergibt 2.0.0)
version = new Alvine.Types.Version('2');
Eine Version kann gegen eine Andere mit der Funktion Version.compareTo() geprüft werden. Diese Methode gibt 1 zurück, wenn das Objekt größer als der übergebene Wert ist und -1 im umgekehrten Fall. 0 wird zurück gegeben, wenn die beiden Versionen identisch sind.
version = new Alvine.Types.Version(4,3,18);
if(version.compareTo(new Alvine.Types.Version(3,3,2))>0) {
// ... code
};
Observer¶
Das Observer-Objekt nimmt neben einer Callback-Funktion noch weitere Argumente auf. Dieses Objekt dient als Übergabe-Objekt für die verschiedenen Observer Pattern.
observer = new Alvine.Types.Observer(function() {
// ...
}, 'arg1', 'arg2', ...); // arg1, arg2, ... wird an update als Parameter übergeben
observer.update(subject);
Über die Methoden Observer.addTag(tag)
können dem Observer Tags zugeordnet werden und per Observer.removeTag(tag)
wieder entfernt werden.
Der Parameter tag kann entweder eine Zeichenkette oder ein Array von Zeichenketten sein. Mit Observer.getTags()
kann eine Collection der Tags
geholt werden.
ObserverList¶
Das ObserverList-Objekt kann von Objekten benutzt werden um das Observer-Pattern zu implementieren.
obj = {
this.observers = new Alvine.Types.ObserverList();
}
obj.prototype.attachObserver = function (observer) {
this.observers.attach(observer);
return this;
};
obj.prototype.detachObserver = function (observer) {
this.observers.detach(observer);
return this;
};
obj.changeValue(newValue) {
this.observers.notify(this);
}
Queue¶
Mit Hilfe einer Queue lässt sich eine Datenstruktur nach dem FIFO-Prinzip abbilden.
queue = new Alvine.Types.Queue()
// Wert einfügen
queue.push('rot')
// Weiteren Wert
queue.push('blau')
// Weiteren Wert
queue.push('schwarz')
// Ersten Wert holen
queue.poll();
// -> rot
queue.poll();
// -> blau
queue.poll();
// -> schwarz
queue.poll();
// -> Exception, da die Queue leer ist
Über die Methode Queue.isEmpty()
kann geprüft werden, ob sich noch Elemente in der Queue befinden.
Die Methode Queue.peek()
liefert wie Queue.poll()
das nächste Element, allerdings wird es nicht aus
der Queue entfernt. Damit ist es möglich einen Blick in die Queue zu werfen, ohne diese zu verändern.
Node¶
Mit Hilfe einer Node lässt sich eine Baumstruktur abbilden. Im folgenden Beispiel wird folgende Baumstruktur abgebildet:
| Fahrzeuge
|-- Land
| |- Auto
| |- Fahrrad
|-- Wasser
Das Node-Objekt ist von Map abgeleitet und beherscht dadurch alle Methoden von Map inklusive der Observer-Logik.
root = new Alvine.Types.Node()
root.set('type','Fahrzeuge');
// Das Root-Element erhält zwei Kinder
land = new Alvine.Types.Node();
land.set('type','Land');
root.appendChild(land);
wasser = new Alvine.Types.Node();
wasser.set('type','Wasser');
root.appendChild(wasser);
// Die Landfahrzeuge werden noch untergliedert
auto = new Alvine.Types.Node();
auto.set('type','Auto');
land.appendChild(auto);
fahrrad = new Alvine.Types.Node();
fahrrad.set('type','Fahrrad');
land.appendChild(fahrrad);
Mit Node.getLevel()
kann der aktuelle Level der Node im Baum geholt werden. Die Root-Node hat den Level 0
.
Node.getParent()
kann das übergeordnete Node-Objekt geholt werden. Beim Root-Objekt ergibt die Antwort undefined
.
Die Methode Node.hasChildren()
liefert true
zurück, wenn die Node Kindelemente besitzt. Mit Node.hasChild(node)
kann dagegen geprüft werden ob die Node ein spezielles Kind besitzt.
Neue Kinder können über die Methode Node.appendChild(node)
hinzugefügt werden. Der Parameter node
muss vom Typ
Alvine.Types.Node
sein. Mit der Methode Node.removeChild(node)
lassen sich Kinder wieder entfernen. Eine Liste mit
allen Kindern erhält man über Node.getChildren()
. Das Ergebnis ist vom Type Alvine.Types.NodeList
.
Eine besondere Funktion ist die Methode Node.getNodeList()
. Diese erlaubt es den gesamten baum als flache Liste
zu durchlaufen. Über die Option filter
kann die Liste auf bestimmte Elemente beschränkt werden. Möchte man die
Node für Landfahrzeuge holen, so kann man folgendermassen schreiben:
root.getNodeList({
filter:function(obj){
return (obj.get('type')==='Land')?true:false;
}
})
Möchte man bei einem Match auch noch alle Kinder zum Ergebnis hinzuziehen, so schreibt man folgendermaßen
nodeList = root.getNodeList({
filter:function(obj){
return (obj.get('type')==='Land')?true:false;
},
appendChildrens: true
})
Mit der Methode fahrrad.getNodeListOfParents()
erhält man eine NodeList
-Liste mit allen Nodes bis zum Root-Element.
NodeList¶
Das NodeList
-Objekt ist eine Collection
die auf Node
-Objekte beschränkt ist.
createNodeListFromMap¶
Die Hilsmethode Alvine.Types.createNodeListFromMap(data, idName, parentName)
erlaubt es eine flache Struktur
aus einer API in einen Bau (Node
) zu überführen. Das folgende Beispiel definiert einen Baum mit der folgenden Struktur:
├─ 4
│ ├─ 3
│ │ ├─ 1
│ │ └─ 8
│ └─ 9
│
├─ 5
│ └─ 2
└─ 6
└─ 7
Mit folgendem Code wird dann die Node-Struktur erstellt. Beim Aufruf von
createNodeListFromMap(data,'cid','parentID')
ist der wzeite Parameter der Name
der ID und der dritte Parameter der Name mit der Referenz auf die Elternnode.
// Die von der API übermittelten Daten haben folgende Struktur:
data = {
"1": {"cid": 1, "parentID": 3},
"2": {"cid": 2, "parentID": 5},
"3": {"cid": 3, "parentID": 4},
"4": {"cid": 4, "parentID": 0},
"5": {"cid": 5, "parentID": 0},
"6": {"cid": 6, "parentID": 0},
"7": {"cid": 7, "parentID": 6},
"8": {"cid": 8, "parentID": 3},
"9": {"cid": 9,"parentID": 4}
}
// Umwandeln der flachen Struktur in einen Baum aus Nodes
nodes = Alvine.Types.createNodeListFromMap(data,'cid','parentID');
Map¶
Eine Map optimiert den Zugriff auf Objektfunktionen mittels Map.set(key, value)
und Map.get(key, default)
map = new Alvine.Types.Map()
// Key/Value setzen
map.set('marke','bmw')
// Weiteren Wert
map.set('farbe','rot')
// Werte holen
map.get('farbe');
// -> rot
Über einen zweiten Parameter kann ein Default-Wert definiert werden. Ist in der Map der entsprechenden Schlüssel nicht definiert wird der Defaultwert zurückgegeben.
map = new Alvine.Types.Map()
// Werte holen
map.get('leistung','700');
// -> 700 (leistung ist kein Schlüssel in der Map)
Die Map.toString()
Funktion gibt alle Key/Values als Zeichenkette aus. Über die Eigenschaften Map.keyValueSeparator (Standard :) und Map.entrySeparator (Standard ,) können die Trennzeichen
definiert werden.
map.toString()
// -> "marke:bmw,farbe:rot"
Möchte man Änderungen an einer Map überwachen, so kann man mittels eines Observers-Objektes eine Funktion an die Map anhängen.
observer = new Alvine.Types.Observer(function(map) {
console.log('updated');
});
// -> updated
// Observer einhängen
map.attachObserver(observer);
// ruft die im Observer definierte Callback-Funktion auf.
map.set('key','value')
// -> updated
Achtung
Die Observer werden nur bei Änderungen an der Map aufgerufen und nicht bei Änderungen von Objekten die in der Map eingetragen sind.
obj = {}
// update() wird nicht aufgerufen
map.set('key', obj);
// update() wird nicht aufgerufen
obj.new='3';
Alle Observer lassen sich über die Methode Map.detachObservers(recursive)
entfernen. Wird für den Parameter recursive
true übergeben, so
wird die Map rekursiv durchlaufen.
Eine Map kann auch auf bestimmte Objekte eingeschränkt werden. So kann über den Konstruktor der Name von Objekten die erlaubt sind angegeben werden. Wird ein anderer Wert übergeben, so wird eine Exception geschmissen.
map = new Alvine.Types.Map('Alvine.Util.UUID');
map.set(key, new Alvine.Util.UUID());
// -> OK
map.set(key, 'string value');
// -> exception
Die Anzahl der Einträge kann über Map.getCount()
abgefragt werden. Über Map.containKey(key)
kann geprüft werden, ob ein Schlüssel in der Map vorhanden ist und mit Map.getKeys()
lassen sich alle Schlüssel holen.
Objekte die man mit dieser Einschränkung benutzen will, müssen die Eigenschaft objectName besitzen.
obj = {
objectName: 'myName';
}
map = new Alvine.Types.Map('myName');
Alternativ zum Namen kann man auch ein Funktionsobjekt übergeben. Die Prüfung erfolgt dann nicht über die Zeichenkette, sondern über den instanceof
Operator.
function myname() {
}
Map = new Alvine.Types.Map(myname);
Die beiden Funktionen Map.checkLimitation(objectName/Instance)
und Map.isLimitToObject(object)
zeichnen für die Überprüfung verantwortlich.
Um über ein Map zu iterieren lässt sich die Methode Map.each(callback)
verwenden.
map = new Alvine.Types.Map();
map.each(function(obj, index) {
// ...
});
Über die Methode Map.promoteNotification()
kann man das Benachrichtigen der Observer deaktivieren und mit Map.promoteNotification()
wieder einschalten.
Wird die Methode mit dem Parameter true
übergeben, so wir das Verhalten auch bei Einträgen die eine Map oder Colection sind rekursive durchgeführt.
map = new Alvine.Types.Map();
map.preventNotification(true);
// Keine Notification an Observer senden
map.set('k','v');
map.promoteNotification(true);
// Notification wird gesendet
map.set('k','v');
Collection¶
Eine Collection ist im wesentlichen ein erweitertes Array und kann beliebige Objekte und Werte aufnehmen.
collection = new Alvine.Types.Collection();
collection.append(new Alvine.Util.UUID());
collection.append('Hans Mustermann');
collection.append('Berlin');
collection.append(1425);
collection.append(4.5);
collection.toString();
// -> 7e571823-2c11-4237-84e6-82374cb54878,Hans Mustermann,Berlin,1425,4.5
Das Trennzeichen bei der Ausgabe ist im Standard ein Komma, dies kann aber über die Eigenschaft separator geändert werden.
Eine Collection kann auch auf bestimmte Objekte eingeschränkt werden. So kann über den Konstruktor der Name von Objekten die erlaubt sind angegeben werden. Wird ein anderer Wert übergeben, so wird eine Exception geschmissen.
collection = new Alvine.Types.Collection('Alvine.Util.UUID');
collection.append(new Alvine.Util.UUID());
// -> OK
collection.append('string value');
// -> exception
Objekte die man mit dieser Einschränkung benutzen will, müssen die Eigenschaft objectName besitzen.
obj = {
objectName: 'myName';
}
collection = new Alvine.Types.Collection('myName');
Alternativ zum Namen kann man auch ein Funktionsobjekt übergeben. Die Prüfung erfolgt dann nicht über die Zeichenkette, sondern über den instanceof
Operator.
function myname() {
}
collection = new Alvine.Types.Collection(myname);
Die beiden Funktionen Collection.checkLimitation(objectName/Instance)
und Collection.isLimitToObject(object)
zeichnen für die Überprüfung verantwortlich.
Um über eine Collection zu iterieren, kann die Methode Collection.each(callback)
verwendet werden. Die Methode erwartet eine Callbackfuntion die mit den in der Collection gespeicherten Werten und Schlüsseln aufgrufen
wird.
collection.each(function(value, key) {
//
});
Eine weitere wichtige Methode ist Collection.contains()
. Diese Methode prüft ob ein Wert in der Collection
enthalten ist. Die Prüfung, ob ein Wert enthalten ist, erfolgt über den identisch Operator ===.
version = new Alvine.Types.Version('1.2.3');
collection = new Alvine.Types.Collection();
collection.append('Hans Mustermann');
collection.append('Berlin');
collection.append(version);
collection.append(1425);
collection.append(4.5);
collection.contains(1425);
// -> true
collection.contains(4.5);
// -> true
collection.contains(4.9);
// -> false
collection.contains('München');
// -> false
collection.contains('Berlin');
// -> true
collection.contains(version);
// -> true
collection.contains(new Alvine.Types.Version('1.2.3'));
// -> false
Einträge aus der Collection entfernt man mit der Methode Collection.remove().
Möchte man Änderungen an einer Collection überwachen, so kann man mittels eines Observers-Objektes eine Funktion an die Map anhängen.
observer = new Alvine.Types.Observer(function(collection) {
console.log('updated');
});
// -> updated
// Observer einhängen
collection.attachObserver(observer);
// ruft die im Observer definierte Callback-Funktion auf.
collection.append('value')
// -> updated
Achtung
Die Observer werden nur bei Änderungen an der Collection aufgerufen und nicht bei Änderungen von Objekten die in der Collection hängen.
Alle Observer lassen sich über die Methode Collection.detachObservers(recursive)
entfernen. Wird für den Parameter recursive
true übergeben, so
wird die Collection rekursiv durchlaufen.
Über die Methode Collection.preventNotification
kann man das benachrichtigen der Observer deaktivieren und mit Collection.promoteNotification
wieder einschalten.
Wird die Methode mit dem Parameter true
übergeben, so wir das Verhalten auch bei Einträgen die eine Map oder Colection sind rekursive durchgeführt.
collection = new Alvine.Types.Collection();
collection.preventNotification(true);
// Keine Notification an Observer senden
collection.append('...');
collection.promoteNotification(true);
// Notification wird gesendet
collection.append('...');
Objektreferenz¶
Colection(limitToObject)
Beschreibung
Neue Collection erstellen
Parameter-Liste
limitToObject (String)
Beschränkung der Objekte der Collection auf diesen Objekttyp
Rückgabewert
Gibt ein neues
Object
vom TypCollection
zurück.
Colection.attachObserver(observer)
Beschreibung
Neuen Observer anfügen
Parameter-Liste
observer (Alvine.Types.Observer)
Neuer zu benachrichtigender Observer
Rückgabewert
Die aktuelle Collection (this)
Colection.containsObserver(observer)
Beschreibung
Prüfung ob ein Observer enthalten ist.
Parameter-Liste
observer (Alvine.Types.Observer)
Zu prüfender Observer
Rückgabewert
true oder false
Colection.detachObserver(observer, recursive)
Beschreibung
Entfernt einen Observer
Parameter-Liste
observer (Alvine.Types.Observer)
Zu entfernender Observer
recursive (Boolean)
Falls true, so wird der Observer für die enthaltenden Objekte, sofern diese die Methode
detachObserver
implementiert haben ebenfalls entfernt.
Rückgabewert
Dieses Objekt
Colection.detachObservers(recursive)
Beschreibung
Alle Observer entfernen
Parameter-Liste
recursive (Boolean)
Falls true, so werden alle Observer für die enthaltenden Objekte, sofern diese die Methode
detachObservers
implementiert haben ebenfalls entfernt.
Rückgabewert
Dieses Objekt
Colection.preventNotification(recursive)
Beschreibung
Schaltet die Benachrichtigung aus
Parameter-Liste
recursive (Boolean)
Falls true, so wird die Benachrichtigung der Observer für die enthaltenden Objekte, sofern diese die Methode
promoteNotification
implementiert haben ebenfalls ausgeschalten.
Rückgabewert
Dieses Objekt
Colection.isNotificationPrevented()
Beschreibung
Gibt zurück, ob die Benachrichtigung ein- oder ausgeschaltet ist.
Rückgabewert
true oder false
Colection.promoteNotification(recursive)
Beschreibung
Benachrichtigung der Observer wieder einschalten
Parameter-Liste
recursive (Boolean)
Falls true, so wird die Benachrichtigung der Observer für die enthaltenden Objekte, sofern diese die Methode
promoteNotification
implementiert haben ebenfalls eingeschaltet.
Rückgabewert
Dieses Objekt
Colection.notifyObserver()
Beschreibung
Observer informieren
Rückgabewert
Dieses Objekt
Colection.isLimitToObject(object)
Beschreibung
Prüft, ob das Objekt gespeichert werden kann. Liegt keine Limitierung der Collection vor, so gibt diese Funktion true zurück.
Parameter-Liste
object (Objekt)
Zu prüfendes Objekt
Rückgabewert
true oder false
Colection.remove(value)
Beschreibung
Prüft ob der übergebene Wert in der Collection enthalten ist und entfernt - falls gefunden - diesen Wert.
Parameter-Liste
value (Mixed)
Zu entfernender Wert
Rückgabewert
Dieses Objekt
Colection.removeIndex(index)
Beschreibung
Element vom spezifiziertem Index entfernen.
Parameter-Liste
index (index)
Index
Rückgabewert
Dieses Objekt
Colection.checkLimitation(objectName)
Beschreibung
Es wird bei Nichtübereinstimmung von
objectName
mit dem definierten Typ eineAlvine.Exception
geworfen.
Parameter-Liste
objectName (String)
Name des zu prüfenden Objekts
Rückgabewert
Dieses Objekt
Colection.append(value)
Beschreibung
Neuen Wert an das Ende der Liste anhängen. Ist die Collection auf einen Objekttyp eingeschränkt, so wird bei Nichtübereinstimmung von
value
mit dem definierten Typ eineAlvine.Exception
geworfen.
Parameter-Liste
value (Mixed)
Anzuhängender Wert
Rückgabewert
Dieses Objekt
Colection.contains(value)
Beschreibung
Überprüfung, ob der übergebene Wert in der Collection vorhanden ist. Zur Prüfung der Übereinstimmung wird der
===
Operator verwendet.
Parameter-Liste
value (Mixed)
Zu überprüfender Wert
Rückgabewert
true oder false
Colection.getCount()
Beschreibung
Anzahl der Einträge (alias zu getLength)
Rückgabewert
Anzahl der Einträge
Colection.clear()
Beschreibung
Alle Einträge aus der Collection entfernen
Rückgabewert
Dieses Objekt
Colection.getClone()
Beschreibung
Kopie der Collection erstellen
Rückgabewert
Kopie der Collection
Colection.getLength()
Beschreibung
Anzahl der Elemente (alias getCount)
Rückgabewert
Anzahl der Elemente
Colection.toString()
Beschreibung
Erstellen einer Zeichenkette mit den Werten der Liste und getrennt durch ein Trennzeichen
Rückgabewert
Zeichenkette mit den Werten der einzelnen Einträge, verknüft durch das angegebenen Trennzeichen.
Colection.toJSON()
Beschreibung
Diese interne Funktion wird von
JSON.stringify
aufgerufen und gibt ein Array mit den Elementen zurück.
Rückgabewert
Array mit den einzelnen Einträgen
Colection.each(callback)
Beschreibung
Durchlauf der Collection und aufruf des Callbacks für jeden Eintrag Dem Callback werden drei Parameter übergeben
(currentValue [, index [, array]]) => { }
Parameter-Liste
callback (function)
Callbackfunktion
Rückgabewert
Dieses Objekt
Colection.getIndex(index)
Beschreibung
Rückgabe eines Wertes am spezifischen Index
Parameter-Liste
index (integer)
Index
Rückgabewert
Wert am Index oder
undefined
Colection.setIndex(index, data)
Beschreibung
Setzen eines spezifischen Indexes. Der übergebene Wert muss - wenn die Collection eingeschränkt ist ein bestimmtes Objekt sein.
Parameter-Liste
index (integer)
Position an der die Daten eingefügt werden sollen
data (mixed)
Einzufügende Daten
Rückgabewert
Dieses Objekt
ID¶
Das ID-Objekt wird mit einem eindeutigen Wert initialisiert und ist besonders für zufällige ID für DOM-Objekte sinnvoll. Die ID ist nur innerhalb einer Webseite eindeutig und nicht kryptografisch abgesichert. Für eine eindeutigere ID sollte man auf die UUID zurückgreifen.
id = new ID();
id.toString()
// -> Mzn6
ID()
Beschreibung
Erstellt neue zufällige ID
Rückgabewert
Neues Objekt mit initialisierter ID
ID.toString()
Beschreibung
ID als Zeichenkette
Rückgabewert
ID als Zeichenkette
ID.getClone()
Beschreibung
ID werden nicht geklont, deshalb gibt diese Methode sich selbst und keine Kopie zurück
Rückgabewert
Eigenes Objekt
Object¶
Im Objekt-Namespace sind generelle Funktionen und Objekte zur Verwaltung und zum Handling von Objekten zusammengefasst. Das Objekt Alvine.Types.Objekt dient als SammelObjekt für alle abgeleiteten Objekte im Framework und stellt grundlegende Funktionen bereit.
object = new Alvine.Types.Object();
// Gibt das Objekt als json-Zeichenkette zurück.
object.toString()
// -> {}
Die Objektklasse wird folgendermaßen als Prototyp-Objekt verwendet:
MyObject.prototype = new Alvine.Types.Object();
MyObject.prototype.constructor = MyObject;
Jedes Objekt besitzt neben der toString-Methode auch eine Object.toJsonString()
Methode. Diese
Methode wandelt das Objekt in ein JSON um. Intern wird die Methode JSON.stringify(this)
verwendet.
Die Methode JSON.stringify() serialisiert entweder das Objekt selbst, oder, falls das Objekt eine
Methode toJSON()
Wichtig
Die Schreibweise von toJSON ist entscheidend! Es gibt auch die Methode toJson(), die ist aber deprecated und ein Alias zu toJsonString()
Funktionen¶
initAlvineObject()¶
Diese Methode initialisiert ein eigenes Objekt mit der Eigenschaft objectName und weißt Standardwerte zu. Außerdem ruft die Methode testIsCalledAsConstructor() auf.
Um en neues Objekt zu definieren sollte diese Funktion direkt nach der Funktionsdeklaration stehen.
function MyObject(options) {
Alvine.Types.initAlvineObject.call(this, 'MyObject', namespace, options);
}
MyObject.prototype.getDefaults = function() {
return {
key : 'value'
};
};
MyObject.prototype = new Alvine.Types.Object();
MyObject.prototype.constructor = MyObject;
Über die Defaults werden die Eigenschaften des Objektes festgelegt, die mittels options überschrieben werden können. Wichtig: Die Defaults geben die möglichen Werte vor, über options können keine Eigenschaften angelegt werden.
obj = new MyObject();
// obj.key enthält value
obj = new MyObject({key: 'myvalue'})
// obj.key enthält myvalue
obj = new MyObject({nokey: 'novalue'})
// obj.nokey ist undefined
testIsCalledAsConstructor()¶
Diese Methode prüft ob die Funktion als Objekt-Konstruktor aufgerufen wurde und ob das Objekt von Alvine.Types.Objekt abgeleitet wurde. Treffen die Erwartungen nicht zu, so wird eine Exception geworfen.
serialize/unserialize¶
Die Json-Methoden erlauben es aus Objekten einfache Strings zu erstellen und diese Daten auszutauschen.
Allerings gehen hier viele Informationen verloren. Aus diesem Grund gibt es die Methoden Alvine.Types.serialize()
und Alvine.Types.unserialize()
.
Alvine.Types.serialize('Das ist ein Test!');
// -> s:17:"Das ist ein Test!";
Methodenreferenz¶
serialize(value)
Beschreibung
Serialisieren von Daten
Parameter-Liste
value (mixed)
Zu serialisierende Variable
Rückgabewert
Zeichenkette mit der serialiserten Repräsentanz.
unserialize(data)
Beschreibung
Unserialisieren von Daten
Parameter-Liste
data (string)
serialisierte Variable
Rückgabewert
Aus der Unserialisierung gewonnener Wert.
clone¶
Die Funktion Alvine.Types.clone() kopiert eine Datenstruktur und erstellt somit ein neues Objekt. Objekte die eine Object.getClone() Methode besitzen werden durch diese Methode geclont. Bei den anderen wird durch alle Properties gelaufen und kopiert. In diesem Fall werden Eigenschaften nur dann kopiert wenn die Methode Object.hasOwnProperty true zurück gibt.
map = new Alvine.Types.Map()
clone = Alvine.Types.clone(map)
Type¶
Im Type Namespace sind Hilfsfunktinen wie Alvine.Types.Type.getType() gebündelt.
getType¶
Mit der Funktion Alvine.Types.Type.getType() kann der Type einer Variable genauer als mit typeof bestimmt werden.
Alvine.Types.Type.getType(4)
// -> "number"
Alvine.Types.Type.getType(new Alvine.Types.Version(1))
// -> "object"
Alvine.Types.Type.getType(2)
// -> "number"
Alvine.Types.Type.getType()
// -> "undefined"
Alvine.Types.Type.getType(1)
// -> "number"
Alvine.Types.Type.getType([1,2])
// -> "array"
Alvine.Types.Type.getType({})
// -> "object"
Alvine.Types.Type.getType(this)
// -> "global"
Alvine.Types.Type.getType(window)
// -> "global"
Über ein true-Flag als zweiter Parameter kann zudem auf die ObjektName Eigenschaft der Alvine-Framework-Objekte zugegriffen werden. Besitzt das Objekt die objectName Eigenschaft, so wird diese zurückgegeben.
Alvine.Types.Type.getType(new Alvine.Types.Map(), true)
// -> "Alvine.Types.Map"
Typprüfung¶
isString¶
Mit der Funktion Alvine.Types.Type.isString() kann geprüft werden ob der Wert eine Zeichenkette ist.
if(Alvine.Types.isString(value)) { ....
isObject¶
Mit der Funktion Alvine.Types.Type.isObject() kann geprüft werden ob der Wert ein Objekt ist.
if(Alvine.Types.isObject(value)) { ....
isSimple¶
Prüfen ob der Type einer Variable eine Zeichenkette, eine Zahl, ein Boolean oder undefined oder null ist.
if(Alvine.Types.isSimple(value)) {
isArray¶
Prüfen ob der Type einer Variable ein Array ist.
if(Alvine.Types.isArray(value)) {