Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Javascript. Последовательность загрузки и исполнения.

8
01 апреля 2011 года
mfender
3.5K / / 15.06.2005
ничто меня так не убивает, как непонятности с JavaScript. Вещь хорошая, но как-то в ней всё не по-человечески, что-ли.

К примеру:
 
Код:
<script src="../public_js/class.js"></script>
<script src="../public_js/do.js"></script>

В class.js пишу
 
Код:
Ca = function(){
  this.Var1 = "undefined";
}

В do.js пишу:
 
Код:
var O = new Ca();
O.Var1 = "давай, покажись!";
$("<h1></h1>").html(O.Var1).appendTo("body");

Гавкает, что Ca is not denied. При этом, если "создаю" O в том же файле, где и объявление Ca - всё прокатывает в лучшем виде.

Вот что это за фигня, и как с ней бороться? Мне всегда думалось, что JavaScript компилируется и исполняется в той последовательности, в которой загружается.
274
01 апреля 2011 года
Lone Wolf
1.3K / / 26.11.2006
Не там матюкается.
 
Код:
var Ca = function(){
  this.Var1 = "undefined";
}
8
01 апреля 2011 года
mfender
3.5K / / 15.06.2005
Цитата: Lone Wolf
Не там матюкается.


Это не важно. Если я всё это заключу в $(document).ready(function(){}); то матюкаться будет уже твой вариант, потому что объявление будет актуально только внутри ready().

13
01 апреля 2011 года
RussianSpy
3.0K / / 04.07.2006
Попробуй сделать так в do.js:

 
Код:
var O = '';

$(document).ready(function(){

O = new Ca();
O.Var1 = "давай, покажись!";
$("<h1></h1>").html(O.Var1).appendTo("body");

});
274
01 апреля 2011 года
Lone Wolf
1.3K / / 26.11.2006
Цитата: mfender
Это не важно. Если я всё это заключу в $(document).ready(function(){}); то матюкаться будет уже твой вариант, потому что объявление будет актуально только внутри ready().



я о том что, Ca у тебя не обьявлена. var отсутсвует.

8
01 апреля 2011 года
mfender
3.5K / / 15.06.2005
ну да, ну да ))))) это ты так думаешь )))) на самом деле, слово var лишь указывает, где переменная будет доступна. если мне нужно, чтобы она была глобальна - var только мешает.
369
02 апреля 2011 года
Kesano
451 / / 09.10.2007
Суть проблемы в том, что не факт, что второй скрипт подгружается после первого.
В этом ты можешь убедиться, если сделаешь, как написал RussianSpy...
Или просто обращение к объекту заключи в функцию и вызови её с таймаутом.

[HTML]function magic {
var O = new Ca();
O.Var1 = "давай, покажись!";
$("<h1></h1>").html(O.Var1).appendTo("body");
}
setTimeout( magic, 3000);[/HTML]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог