2016-06-22 11 views
-1
function Person(firstName = "John", lastName = 'Doe', age = 0, gender = 'Male') { 
    this.firstName = firstName; 
    this.lastName = lastName; 
    this.age = age; 
    this.gender = gender; 
    this.sayFullName = function() { 
     return this.firstName + " " + this.lastName 
    }; 
} 

Person.prototype.greetExtraTerrestrials = function(raceName) { 
    return `Welcome to Planet Earth ${raceName}`; 
}; 

Was ist mit diesem Code falsch? Erstellt es nicht eine Klassenmethode namens greetExtraTerrestrials?Erstellen einer Klassenmethode

+1

Was funktioniert nicht? Was ist die Fehlermeldung? Ohne eine Problemaussage ist jeder Code korrekt. – Bergi

Antwort

1

Stellen nicht diese Funktion auf Prototyp, dass sich es wie

Person.greetExtraTerrestrials = function(raceName) { 
    return `Welcome to Planet Earth ${raceName}`; 
}; 

und rufen auf Klasse setzen wie

Person.greetExtraTerrestrials('ABC'); 
+0

perfekt. Vielen Dank! – Michael

+0

@Michael Willkommen –

0

Eigentlich funktioniert es, aber zunächst müssen Sie eine Instanz erstellen Person kann ihre Methoden aufrufen. Zum Beispiel:

var john = new Person("John"); 
console.log(john.greetExtraTerrestrials("predator")); 
1

können Sie tun beide! Der Unterschied in der

class Person(...) { 
    ... 
} 

Person.myFunction = function(val) { // This is a public function 
    return val; 
} 

Person.prototype.myFunction = function(val) { // This is a private function 
    return val; 
} 

ist, wie Sie Zugang es.

Zugang der öffentlichen Funktion:

var r = Person.myFunction("Hello!"); 
console.log(r); 

Zugang der privaten Funktion:

var person1 = new Person(...); 
var r = person1.myFunction("Hello!"); 
console.log(r); 

Siehe auch dieses question.

Verwandte Themen