OOP javascript e Simple Class Instantiation
Primeiro de tudo me desculpe se esta é uma pergunta estúpida. Eu escrevi dois trechos de código abaixo. O primeiro trecho de código encontrado emAqui escrito porJohn Resig
e, sem dúvida, ele é um dos melhores e o segundo trecho de código é modificado por mim a partir do código original apenas para entender a diferença, mas não tenho certeza qual é a diferença entre ambos e o que posso e não posso fazer com ambos comparativamente . Por favor, alguém me ajude a entender a diferença. Obrigado.
<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>
Versão 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 que devo usar o protótipo do objeto para adicionar um método (depois de fazer uma instância) em vez de escrevê-lo dentro do construtor?