Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.11.2010, 02:20
Новичок на форуме
Отправить личное сообщение для r1der Посмотреть профиль Найти все сообщения от r1der
 
Регистрация: 12.11.2010
Сообщений: 2

Несколько вопросов касательно 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 часа, не сомневайтесь всю инфу читал гуглил, спрашиваю людей знающих, чтобы удостоверится , что все так как надо понял, и путаница в голове от разных языков не исказила восприятие)
Ответить с цитированием
  #2 (permalink)  
Старый 12.11.2010, 02:40
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от r1der
После того как создался массив/объект в функции и мы его вернули в глобальный контекст, t становится ссылкой на созданный объект, ссылка arr удаляется, но объект продолжает жить, верно?
локальная переменная arr существует только в момент выполнения ф-ции, и разумеется исчезает.
объект-массив, на который она ссылается, остается, так как на него продолжает ссылаться глобальная переменная t
Сообщение от r1der
теперь с каждым вызовом fn numberOfCalls будет выступать в роли статической переменной и увеличиваться при каждом вызове? Это связано с тем что createCounter создает лексическую область видимости, что-то вроде класса и сохраняется в fn?
это связано с тем, что createCounter находится в замыкании, и только с этим.
на сайте есть отличная статья про замыкания
Сообщение от r1der
Классы в JS создаются так:
нет.
в JS нету классов. совершенно нету
и они никак не создаются, соответственно
все попытки создания классов в JS - ложь и провокация
всего лишь попытка привнести в язык привычный по-другим языкам механизм.
но, он в этом языке совершенно ни к месту, и не нужен
Ответить с цитированием
  #3 (permalink)  
Старый 12.11.2010, 15:02
Новичок на форуме
Отправить личное сообщение для r1der Посмотреть профиль Найти все сообщения от r1der
 
Регистрация: 12.11.2010
Сообщений: 2

да формально классов нет, но в коде часто видно, что создается подобие класса, и я как раз спрашиваю как это делается, а надо или не надо это другой вопрос, чаще всего все-таки надо
Ответить с цитированием
  #4 (permalink)  
Старый 12.11.2010, 15:22
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

http://javascript.ru/tutorial/object/inheritance
http://javascript.ru/tutorial/object
Ответить с цитированием
  #5 (permalink)  
Старый 12.11.2010, 23:52
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от r1der
что создается подобие класса,
подобие.
это примерно то же самое, как если нарисовать коту на заднице морду слона, а хвост разукрасить как хобот.
подобие, и только
Сообщение от r1der
и я как раз спрашиваю как это делается
противоестественным образом это делается
а как именно, можно найти в гугле.
да и на форуме наверняка мелькало.
в общем, ищите, если вам очень нужно.
Кстати, вы говорите, что уже видели это в коде.в чем проблема выдрать оттуда?
Сообщение от r1der
чаще всего все-таки надо
нет, не надо.
это просто так только кажется.
потому что большинство людей не могут понять как это "объекты есть, а классов нету", и не умеют пользоваться прототипным ООП
как следствие пытаются сделать язык похожим на классовый язык.
то есть на то, чем он изначально не являлся и не должен
Ответить с цитированием
  #6 (permalink)  
Старый 13.11.2010, 02:32
Аватар для vladlen
Кандидат Javascript-наук
Отправить личное сообщение для vladlen Посмотреть профиль Найти все сообщения от vladlen
 
Регистрация: 19.10.2010
Сообщений: 143

Сообщение от Gvozd
а как именно, можно найти в гугле.
Все куда хужее, это есть и в учебнике.
Но кому он нужен, есть же форум
__________________
Если хочешь что-то сделать - сделай это…
Ответить с цитированием
  #7 (permalink)  
Старый 13.11.2010, 02:51
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

vladlen,
сам когда-то это читал.
но за личной ненадобностью уже и забыл.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько вопросов про таймер ВэйДлин Общие вопросы Javascript 19 06.08.2010 01:16
Вопросов несколько, так что опишу их дальше=) TrooMan Javascript под браузер 25 23.03.2010 19:02