Подтвердить что ты не робот

JavaScript prototype.init безумие

Может ли кто-нибудь объяснить значение функции prototype.init в JavaScript и когда он вызывается во время создания объекта?

Почему вы хотите перезаписать его пустой функцией?

Я читаю JavaScript для веб-книги и застрял на этом в течение последних нескольких часов... что должен сделать кусок кода?

var Class = function(){ 

var klass = function(){
   this.init.apply(this, arguments); 
};

klass.prototype.init = function(){};

// Shortcut to access prototype 
klass.fn = klass.prototype;

// Shortcut to access class 
klass.fn.parent = klass;

...
}

Это слишком много волшебства для меня...:)

4b9b3361

Ответ 1

Я не уверен, что вы не понимаете. init - это просто метод, подобный любому другому, который вызывается в конструкторе и с теми же параметрами, что и конструктор. Если он пуст, то это просто потому, что человек, который его написал, не должен был ничего на нем накладывать, но хотел сложить основы его класса.

function Foo(a, b, c) {
    this.init.apply(this, arguments); //This simply calls init with the arguments from Foo
}

Foo.prototype.init = function(a, b, c) {
    console.log(a, b, c);
}

var f = new Foo(1, 2, 3); //prints 1 2 3

http://jsfiddle.net/Hmgch/

Ответ 2

Какую часть кода должен достичь?

Путаница.

var Class = function() { 
  // initialization logic
}

// Shortcut to access prototype 
Class.fn = klass.prototype;

// Shortcut to access class 
Class.fn.constructor = Class;