Несколько вопросов касательно JavaScript(замыкания, классы..)
Пишу на 8 языках, потому часто в голове возникает путаница, потому и спрашиваю, чтобы подтвердить свои догадки ( не все моменты в книгах описаны так явно как хотелось бы)
1) Время жизни объекта
var x=function () { var arr=[0,1,2]; return arr; }
var t=x();
После того как создался массив/объект в функции и мы его вернули в глобальный контекст, t становится ссылкой на созданный объект, ссылка arr удаляется, но объект продолжает жить, верно?
2) Лексическая область видимости и замыкания, объект вызова
предположим есть функция
function createCounter() {
var numberOfCalls = 0;
return function() {
return ++numberOfCalls;
}
}
var fn = createCounter();
теперь с каждым вызовом fn numberOfCalls будет выступать в роли статической переменной и увеличиваться при каждом вызове? Это связано с тем что createCounter создает лексическую область видимости, что-то вроде класса и сохраняется в fn?
3) Классы в JS создаются так:
var cl=function (x) {
this.test=x;
this.method=function (x) { return x*x; }
}
в данном случае cl хранит в себе класс, и есть одно свойство и один метод, только такой способ создания классов возможен?
4) Книжка "с носорогом", это хорошее пособие по js? Есть ли что-нить получше?
Если возникнут еще вопросы напишу. Заранее спасибо всем за ответы.
JS учу 2 часа, не сомневайтесь всю инфу читал гуглил, спрашиваю людей знающих, чтобы удостоверится , что все так как надо понял, и путаница в голове от разных языков не исказила восприятие)
|