Javascript. Последовательность загрузки и исполнения.
К примеру:
Код:
<script src="../public_js/class.js"></script>
<script src="../public_js/do.js"></script>
<script src="../public_js/do.js"></script>
В class.js пишу
Код:
Ca = function(){
this.Var1 = "undefined";
}
this.Var1 = "undefined";
}
В do.js пишу:
Код:
var O = new Ca();
O.Var1 = "давай, покажись!";
$("<h1></h1>").html(O.Var1).appendTo("body");
O.Var1 = "давай, покажись!";
$("<h1></h1>").html(O.Var1).appendTo("body");
Гавкает, что Ca is not denied. При этом, если "создаю" O в том же файле, где и объявление Ca - всё прокатывает в лучшем виде.
Вот что это за фигня, и как с ней бороться? Мне всегда думалось, что JavaScript компилируется и исполняется в той последовательности, в которой загружается.
Код:
var Ca = function(){
this.Var1 = "undefined";
}
this.Var1 = "undefined";
}
Цитата: Lone Wolf
Не там матюкается.
Это не важно. Если я всё это заключу в $(document).ready(function(){}); то матюкаться будет уже твой вариант, потому что объявление будет актуально только внутри ready().
Код:
var O = '';
$(document).ready(function(){
O = new Ca();
O.Var1 = "давай, покажись!";
$("<h1></h1>").html(O.Var1).appendTo("body");
});
$(document).ready(function(){
O = new Ca();
O.Var1 = "давай, покажись!";
$("<h1></h1>").html(O.Var1).appendTo("body");
});
Цитата: mfender
Это не важно. Если я всё это заключу в $(document).ready(function(){}); то матюкаться будет уже твой вариант, потому что объявление будет актуально только внутри ready().
я о том что, Ca у тебя не обьявлена. var отсутсвует.
ну да, ну да ))))) это ты так думаешь )))) на самом деле, слово var лишь указывает, где переменная будет доступна. если мне нужно, чтобы она была глобальна - var только мешает.
В этом ты можешь убедиться, если сделаешь, как написал RussianSpy...
Или просто обращение к объекту заключи в функцию и вызови её с таймаутом.
[HTML]function magic {
var O = new Ca();
O.Var1 = "давай, покажись!";
$("<h1></h1>").html(O.Var1).appendTo("body");
}
setTimeout( magic, 3000);[/HTML]