OOP Javascript und Simple Class Instantiation
Zuallererst tut es mir leid, wenn dies eine dumme Frage ist. Ich habe unten zwei Code-Schnipsel geschrieben. Das erste Code-Snippet, das von gefunden wurdeHier geschrieben vonJohn Resig
und zweifellos ist er einer der Besten und das zweite Code-Snippet wurde von mir vom Originalcode modifiziert, nur um den Unterschied zu verstehen, aber ich bin mir nicht sicher, was der Unterschied zwischen beiden ist und was ich mit beiden vergleichsweise machen kann und was nicht . Bitte hilft mir jemand, den Unterschied zu verstehen. Vielen Dank.
<code> function makeClass(){ return function(args){ if ( this instanceof arguments.callee ) { if ( typeof this.init == "function" ) this.init.apply( this, args.callee ? args : arguments ); } else return new arguments.callee( arguments ); }; } var User = makeClass(); User.prototype.init = function(first, last){ this.name = first + " " + last; }; var user = User("John", "Resig"); console.log(user); </code>
Geänderte Version
<code> function myClass(args) { if (this instanceof arguments.callee) { this.init = function(first, last){ this.name = first + " " + last; }; this.init.apply( this, args.callee ? args : arguments ); } else return new arguments.callee( arguments ); } var obj = new myClass('Sheikh', 'Heera'); console.log(obj); </code>
Warum sollte ich den Prototyp des Objekts verwenden, um eine Methode hinzuzufügen (nachdem ich eine Instanz erstellt habe), anstatt sie in den Konstruktor zu schreiben?