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;
...
}
Это слишком много волшебства для меня...:)
Ответы
Ответ 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;