[S3L3] this, Constructor, Prototype Flashcards

1
Q

Was ist an this so besonders in Javascript?

A
  • this is nicht davon abhängig wo es steht

- SONDERN wann und wo es gecallt wird

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Erkläre das Beispiel für eine Global Binding von this!

function sayName(name) {
console.log(this);
return name;

sayName(‘Sascha’);

A

-Im Global Scope/Global Binding ist der Value von this immer die Console/das Window Object

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Erkläre das Beispiel für eine implicit Binding von this!

const myObj = {
greeting: 'Hello',
sayHello: function (name) {
console.log(`${this.greeting} ${name}!`);
console.log(this);
}
};

myObjs.sayhello(‘Sascha’);

A

-Mann kann auf die SayHello Method referenzieren (Functions in Objekten werden Methods genannt!)

  • console.log(this) zeigt auf das Objekt
  • Denn immer wenn eine Function mit einem PUNKT Functionname gecallt wird bezieht sich this implicit auf das worauf es gecallt wird
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Erkläre das Beispiel für eine New Binding von this!

const Person(greeter) = {
this.greeting = 'Hello',;
this.greeter = greeter;
this.speak = function() {
console.log(this.greeting + this.greeter);
console.log(this);
};
}
const jerry = new Person('jerry ');
const sascha= new Person('sascha');

jerry. speak();
sascha. speak();

A
  • Immer wenn eine Constructor Function genutzt wird

- Bezieht sich this auf die Instanz des Objects

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Erkläre das Beispiel für eine New Binding von this!

const Person(greeter) = {
this.greeting = 'Hello',;
this.greeter = greeter;
this.speak = function() {
console.log(this.greeting + this.greeter);
console.log(this);
};
}
const jerry = new Person('jerry ');
const sascha= new Person('sascha');

jerry. speak();
sascha. speak();

A
  • Immer wenn eine Constructor Function genutzt wird
  • Bezieht sich this auf die spezifische Instanz des Objects welche durch den Konstruktor erstellt und returned ist
  • Erst durch das Aufrufen mit new weiß this auf was es sich beziehen soll
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Erkläre das Beispiel für eine Explicit Binding von this!

const Person(greeter) = {
this.greeting = 'Hello',;
this.greeter = greeter;
this.speak = function() {
console.log(this.greeting + this.greeter);
console.log(this);
};
}
const jerry = new Person('jerry ');
const sascha= new Person('sascha');

jerry. speak.call(sascha);
sascha. speak.apply(jerry);

sascha. speak();
jerry. speak();

A
  • Durch .call, .bind oder .apply überschreibt man Objekte und kann sie zusammenbinden
  • Man kann die Objekte vertauschen und das this damit auf andere Objekte beziehen lassen
  • Immer wenn die call, apply oder bind Methode genutzt wird ist this explicitly definiert
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

In welchem Scope ist this in folgendem Code?

console.log(this);

A

-Global/Window Object Scope

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was ist Object Oriented Programming OOP Paradigma?

A
  • Ein Paradigma, welches Objekte über Funktionen bevorzugt
  • Daten werden der Logik bevorzugt
  • Eine logische Prozedur, welche Daten als Input nimmt und sie verarbeitet und als Output zurückgibt.
  • Oftmals in Java oder Python
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Ist Javascript eine Klassenbasierte Sprache by Default?

A
  • Nein, Klassen sind nur Syntactic Sugar über das Constrcutor Pattern
  • Objektorientierung ist nicht direkt in JS eingebaut
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Gibt es Klassenvererbung(Inheritance) in JS?

A
  • Nein es gibt aber pseudo-classical inheritance und andere Wege eine Vererbung zu erreichen
  • Alles basiert auf dem Constrcutor, dem new Keyword und Prototypes
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was sind Constructor Functions?

A
  • Constrcutors sind auch als Object Creator Functions bekannt
  • Ihr Zweck ist es ein Object zu erhalten und ein neues Object zu erschaffen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Werden Constructor Function mit großem Anfangsbuchstaben geschrieben/Capitalized?

A
  • Ja

- function Person()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wie werden Klassen instanziert?

A
  • Mit den new Keyword

- new Person()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was geschieht mit this nachdem man new genutzt hat?

A

-this wird zu dem Object welches von new returned wird

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wie ist eine Constructor Function aufgebaut?

A
funmction Animal(object) {
this.name = object.name;
}
  • Name des Ojects ist capitalized
  • Jedem Konstructor wird ein Object übergeben
  • this wird als neues Object returned
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Was geschieht in dieser Constructor Function?

function Person(attributes) {
this.age = attributes.age;
this.name = attributes.name;
this.homeTown = attributes.homeTown;
this.speak = function () {
return `Hello, I am ${this.name}`;
};
}
A

-jedes Atribut dem Object gesetted

-

17
Q

Wie sieht ein Konstruktor für eine neue Person aus?

A
const fred = new Person({
age : 32,
name: 'Fred',
homeTown: 'Bredrock'
});

fred.speak(); //Hello my Name is Fred

18
Q

Was ist das Object Prototype?

A
  • Ist in jedes Object in Javascript eingebaut
  • Erlaubt es Object Eigenschaften deliberately zu modifizieren
  • Hilft bei Speicheroptimierung
  • Erlaubt es Eigenschaften eines Objects auf ein anderes zu übertragen
  • Muss mit Vorsicht genutzt werden, kann Methoden eines anderen Objects überschreiben
19
Q

Was ist ein Beispiel für ein Prototype, dass einem Object eine Methode verlieht?

A
function Person(attributes) {
this.age = attributes.age;
this.name = attributes.name;
this.homeTown = attributes.homeTown;
}

Person.prototype.speak = function () {
return Hello, my name is ${this.name};
};

20
Q

Was bieten Prototypes?

A
  • Man kann Methoden im Prototype definieren und hat diese nicht im Object selbst
  • Mann kann Prototypes nutzen um damit zu vererben
21
Q

Erkläre das Beispiel für eine Überschreibung via Prototype!

function Child (childAttributes {
Person. call(this, childAttributes); //Binding this to Person
this.isChild = childAtributes .isChild //this will be a special atribute to child
}
Child. prototype = Object . create (Person.prototype);
const pebbles = new   Child ({
age: 3, 
name: 'Pebbles',
homeTown: 'Bedrock'
});
A

pebbles. speak(); //Hello, my name is pebbles

22
Q

Schreibe eine Klasse Fruit, die attribute übernimmt!

A
function Fruit(attrs) {
this.type = attrs.type;
this.name = attrs.name; 
this.isRipe = attrrs.isRipe;
this.calories = attrs.calories;
}

Fruit.prototype.shipped = function(destination) {
console.log(Shipping ${this.name} to $[destination});
};

Fruit.prototype.calculateCals = function() {
console.log(Calories in ${this.name} are $[this.calories * 200});
};

const banana = new Fruit({
type: 'tree',
name: Banana',
isRipe: true;
calories: 100
});

console.log(banana.shipped(‘Hawaii’);

function Banana(bannaAttrs) {
Fruit.call(this, bananaAttrx)
this.doMonkeysLikeIt = bananaAttrs.doMoneysLikeIt;
}
Banana.prototype.checkIfMonkeysLikeIt = function() {
if (this.doMonkeysLLikeIt) {
return true; 
} else {
return false;
}
};
const newBanana = new Banana({
doMonkeysLikeIt: true, 
type: 'Tree',
name: 'Banana',
isRipe: false, 
calories: 0.1
});

console.log(newBanana)

23
Q

Was sind die 4 Methoden für Binding-Techniques in JS?

A
  • Global Binding (window/terminal Obj)
  • Implicit Binding (Object)
  • New Binding (new Keyword für Instanz vom Object)
  • Explicit Binding (call, pass, binding)
24
Q

Möchte man Global Binding vermeiden und wie würde man es tun?

A

-Ja, das möchte man

-

25
Q

Wie benutzt man ein explicites Binding?

A

testHello.call(myObj, ‘Rosie’);

26
Q

Was ist der Unterschied zwischen .bind und .call?

A

-bind hält die functions um sie später zu nutzen, aber führt diese nicht aus

27
Q

Was ist der Spread Operator?

A
const yourObject = {
  name: 'Dan Levy',
  city: 'Denver',
  favoriteFood: '🍕'
}

const thingsYouEnjoy = [‘Hiking’, ‘JavaScript’, ‘Teaching’]

// Using yourObject and thingsYouEnjoy array, set the context of this on tellUsAboutYourself and call the function.

function tellUsAboutYourself(thing1, thing2, thing3){
  return `Hi! My name is ${this.name}, I live in ${this.city}, and I enjoy ${thing1}, ${thing2}, and ${thing3}. I love to eat ${this.favoriteFood}.`
}

/tellUsAboutYourself.call(yourObject, thingsYouEnjoy[0], thingsYouEnjoy[1], thingsYouEnjoy[2]);

tellUsAboutYourself.call(yourObject, …thingsYouEnjoy);

Er lädt ein Array in eine Function als Argumente hinein.

28
Q

Warum benutzt man inheritance?

A
  • Weil es gut für den Memoryload ist

- Weil man einfach Dinge zwischen Klassen austauschen kann

29
Q

Was bedeutet Prototype?

A

-Blueprint

30
Q

Was ist eine Constructor Function?

A
function Person(name) {
this.name = name
}
  • Setzt Attribute für this
  • Hat kein Return
31
Q

Wie kann man eine Function einem Object zuordnen?

A
function Person(name) {
this.name = name
}

Person.prototype.sayName = function sayName() {
console.log(My name is ${this.name});

const dan = new Person('Dan')
const cat = new Person('Rosie')

console. log(dan.name); //Dan
cat. sayName(); //My name is Rosie

32
Q

Ist es für this this Keyword wichtig wo es steht oder wie es invoked wurde?

A

-Wie es invoked wurde!

33
Q

test

A

test