OOP javascript y Simple Class Instantiation
En primer lugar, lo siento si esta es una pregunta estúpida. He escrito dos fragmentos de código a continuación. El primer fragmento de código encontrado enaquí escrito porJohn Resig
y, sin duda, es uno de los mejores y el segundo fragmento de código lo modifiqué del código original solo para entender la diferencia, pero no estoy realmente seguro de cuál es la diferencia entre ambos y lo que puedo y no puedo hacer con ambos comparativamente. . Por favor alguien me ayude a entender la diferencia. Gracias.
<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>
Versión modificada
<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>
¿Por qué debería usar el prototipo del objeto para agregar un método (después de crear una instancia) en lugar de escribirlo dentro del constructor?