Nach dem Winkel js docsAngular Js-Dienst gibt Funktion/Objekt zurück?
Service (Name, Konstruktor); Name: Name Konstruktor: Eine injizierbare Klasse (Konstruktorfunktion), die instanziiert wird.
Internally :
{
$get: function() {
return $injector.instantiate(constructor);
}
}
Es könnte aus den Winkel docs geschlossen werden, dass Service der als Konstrukteur und Anbieter erstellt eine Instanz erhalten durch $ Injektor und kehrt durch $ bestanden zweite Argument behandelt. Also, wann immer wir den Dienst in einer unserer Modulfunktionen (Controller, Direktiven etc) injizieren werden, sollte es das neu erstellte Objekt zurückgeben, das Singleton natürlich ist.
Jetzt kommt das Problem hier, wenn ich meinen Dienst wie diese Weisen definiere.
1. _app_user_content.service("MyService" , function(){
this.Message = "Greetings!";
}); //returns object when injected.
2. _app_user_content.service("MyService" , function(){
this.Message = "Greetings!";
return "123"
}); // returns object when injected.
3. _app_user_content.service("MyService" , function(){
this.Message = "Greetings!";
return function(){}
}); //returns function(){} when injected. Doesnot return object
Warum gibt der dritte Fall eine Funktion zurück?
Ihre Antwort zeigt richtig auf Javascript syntaktische Grundlagen. Weitere Untersuchungen, konnte ich schließen, dass, wenn die Funktion javascript primitives zurückgibt es das neu erstellte Objekt zurückgibt. Wenn die return-Anweisung jedoch andere als primitive Typen enthält, weist sie einfach die return-Anweisung zu und erstellt kein Objekt. – ajaykumar