2017-05-11 9 views
2

Konsole druckt nicht definiert. Was ist falsch an meinem Code?

function Person(name,age){ 
 
    this.name=name; 
 
    this.age=age; 
 
} 
 
var person1 = new Person("name1",4) 
 
    var person2 = new Person("name2",6) 
 
function Animal(name,size){ 
 
    this.name=name; 
 
    this.size=size; 
 
} 
 
var animal1=new Animal("name1","small") 
 
var animal2 = new Animal("name2","big") 
 
Person.prototype.sayName=function(){ 
 
    console.log("Hello "+[name]) 
 
} 
 
Animal.prototype.sayName=function(){ 
 
    console.log("Hello "+[name]) 
 
} 
 
animal1.sayName();

Ich habe gerade erfahren, Javascript und ich begann, um mit einigem Code zu spielen. Wenn ich diesen Code ausführe, druckt die Konsole nicht definiert. Ich glaube, die Konsole sollte drucken: "Hallo animal1". Was ist daran falsch?

+1

Was denken Sie '[ name] 'tut genau? –

Antwort

0

In JavaScript, wenn Sie sagen neue, wäre die erste Sache, die passieren würde, dass ein leeres Objekt erstellt würde. Bei der Erzeugung dieses Objekts wird die Tierfunktion ausgeführt, und der aktuelle Ausführungskontext würde sich auf das neu erstellte leere Objekt beziehen. Wenn Sie also this.name = name und this.size = size angeben, bezieht sich das Schlüsselwort dieses auf das neu erstellte Objekt. Sie müssen also immer die Eigenschaft verweisen mit diese, während es, wie es im folgenden Snippet Zugriff:

function Animal(name,size){ 
 
    this.name=name; 
 
    this.size=size; 
 
} 
 
var animal1=new Animal("name1","small") 
 

 
Animal.prototype.sayName=function(){ 
 
    console.log("Hello "+this.name) 
 
} 
 
animal1.sayName();

Hope this beantwortet Ihre Frage

+0

Vielen Dank für Ihre Erklärung. Es funktionierte! –

0

Sie müssen das Schlüsselwort this angeben, um auf die aktuelle Instanz zu verweisen.

Animal.prototype.sayName = function(){ 
    console.log("Hello "+ this.name) 
} 
0

console.log("Hello " + [name]) sollte console.log("Hello " + this.name) sein

ich es in meiner Konsole versucht, es gibt jetzt Hello name1.

Verwandte Themen