From 0539670917d0aeb39caa988aa1fe05c8a0104dab Mon Sep 17 00:00:00 2001
From: Sascha Schulz <sschulz@dh-software.de>
Date: Di, 09 Mai 2023 15:53:04 +0200
Subject: [PATCH] add js examples for oop and asynchronicity

---
 templates/007-js/constructors-es6.js |   14 +++++++
 templates/007-js/array-sum.js        |   13 ++++++
 templates/007-js/async-1.js          |    6 +++
 templates/007-js/delay.js            |   20 ++++++++++
 templates/007-js/inheritance-es6.js  |   27 +++++++++++++
 5 files changed, 80 insertions(+), 0 deletions(-)

diff --git a/templates/007-js/array-sum.js b/templates/007-js/array-sum.js
new file mode 100644
index 0000000..8fe086b
--- /dev/null
+++ b/templates/007-js/array-sum.js
@@ -0,0 +1,13 @@
+const a = [1, 2, 4, 8];
+
+Array.prototype.sum = function() {
+    let sum = 0;
+
+    for (let number of this) {
+        sum += number;
+    }
+
+    return sum;
+}
+
+console.log(a.sum());
diff --git a/templates/007-js/async-1.js b/templates/007-js/async-1.js
new file mode 100644
index 0000000..bb91700
--- /dev/null
+++ b/templates/007-js/async-1.js
@@ -0,0 +1,6 @@
+setTimeout(function() {
+    // Code, der nach 2 Sekunden ausgeführt wird
+    console.log("zweiter");
+}, 2000);
+
+console.log("erster");
diff --git a/templates/007-js/constructors-es6.js b/templates/007-js/constructors-es6.js
new file mode 100644
index 0000000..d9df1a2
--- /dev/null
+++ b/templates/007-js/constructors-es6.js
@@ -0,0 +1,14 @@
+class Rectangle {
+    constructor(a, b) {
+        this.a = a;
+        this.b = b;
+    }
+
+    getArea() {
+        return this.a * this.b;
+    }
+}
+
+const r = new Rectangle(2, 3);
+
+console.log(r.getArea());
diff --git a/templates/007-js/delay.js b/templates/007-js/delay.js
new file mode 100644
index 0000000..98ed5b7
--- /dev/null
+++ b/templates/007-js/delay.js
@@ -0,0 +1,20 @@
+const delay = function() {
+    // implementieren
+}
+
+console.log("erster");
+
+delay(2000)
+    .then(function () {
+        console.log("zweiter");
+
+        return delay(2000);
+    })
+    .then(function() {
+        console.log("Text A");
+
+        return delay(2000);
+    })
+    .then(function() {
+        console.log("Text B");
+    })
diff --git a/templates/007-js/inheritance-es6.js b/templates/007-js/inheritance-es6.js
new file mode 100644
index 0000000..c6a26ae
--- /dev/null
+++ b/templates/007-js/inheritance-es6.js
@@ -0,0 +1,27 @@
+// Oberklasse
+class Shape {
+    getType() {
+        return "Shape";
+    }
+}
+
+// Unterklasse erbt von Oberklasse
+class Rectangle extends Shape {
+    constructor(a, b) {
+        super();
+
+        this.a = a;
+        this.b = b;
+    }
+}
+
+const r = new Rectangle(2, 3);
+
+console.log(r.getType());
+
+// Implementierung per Prototype weiterhin möglich, falls man so will
+Rectangle.prototype.getType = function() {
+    return "Rectangle";
+}
+
+console.log(r.getType());

--
Gitblit v1.9.3