ООП javascript и Простое создание класса
Прежде всего, извините, если это глупый вопрос. Я написал два фрагмента кода ниже. Первый фрагмент кода найден изhere написаноJohn Resig
и, несомненно, он один из лучших и второй фрагмент кода, который я модифицировал из исходного кода только для того, чтобы понять разницу, но на самом деле я не уверен, в чем разница между обоими и тем, что я могу и не могу делать с оба сравнительно. Пожалуйста, кто-нибудь, помогите мне понять разницу. Благодарю.
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);
Модифицированная версия
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);
Why should I use the object's prototype to add a method (after making an instance) instead of writing it inside the constructor ?