2017-06-17 3 views
0

Ich bin ein Student neu zu lernen Node.js. Warum sollte die console.log mich undefiniert geben? Ich erwarte, dass es "Hello World!" stattdessen. Wo liege ich falsch?Nodejs Aufruf einer Funktion

Danke!

function Greetr() { 
    this.greeting = 'Hello World!'; 
} 


Greetr.prototype.greet = function() { 
    console.log(this.greeting); 
} 

Greetr.prototype.greet(); 
+2

Mögliche Duplikat erstellen müssen zu erhalten [Gibt es einen Unterschied zwischen Aufruf Funktion in functionName- .prototype.methodName() und funObject.methodName()?] (https://stackoverflow.com/questions/44517936/is-there-any-difference-between-calling-function-in-functionname-prototype-metho) –

Antwort

1

Da Sie Ihren Gruß über Ihren Prototyp zugreifen. this in diesem Fall ist nicht Ihr Objekt, wie Sie erwarten. Sie können sehen, was this ist, indem Sie es protokollieren.

function Greetr() { 
 
    this.greeting = 'Hello World!'; 
 
} 
 

 
Greetr.prototype.greet = function() { 
 
    console.log(this); 
 
} 
 

 
Greetr.prototype.greet();

Wie Sie sehen, this bezieht sich auf Ihre prototype object, die keine Eigenschaft mit dem Namen es hat greeting, so undefined loggt sein.

Um das gewünschte Ergebnis Sie zunächst ein object, dann rufen Sie Ihre greet Funktion über diese object

function Greetr() { 
 
    this.greeting = 'Hello World!'; 
 
} 
 

 

 
Greetr.prototype.greet = function() { 
 
    console.log(this.greeting); 
 
} 
 

 
var greetr = new Greetr(); 
 
greetr.greet();