есть ли global в javascript
всем здравствуйте,
есть 2 объекта из одного в другой переносятся функции примерно так
grup_1 = new (function(){
this.methot_1 = function(url)
{
alert(texting+url);
}
this.methot_2 = function()
{
alert(texting);
}
})();
grup_2 = new (function(){
var texting = 'sdjfskdjfhskdjfhsk';
this.methot_1 = grup_1.methot_1;
this.methot_2 = grup_1.methot_2;
})();
<input type="button" onclick="grup_2.methot_1('picture');" value="alert">
в этом случае пишется что texting - определение отсутствует скажите есть ли функция что то вроди global в javascript чтобы решить такую проблему. |
var texting;
var grup_1 = ...
var grup_2 = new (function() {
texting = 'adfkajhdflkajdf';
...
})()
|
var grup_1= new function(){};
|
scuter, если вы имеете ввиду global из PHP, то это не функция и в вашем случае никаким образом вам не поможет. Имхо, вы просто не понимаете основ замыканий в JS.
В вашем случае есть два варианта для решения: Вариант раз:
grup_1 = new (function(){
this.methot_1 = function(url)
{
alert(this.texting+url);
}
this.methot_2 = function()
{
alert(this.texting);
}
})();
grup_2 = new (function(){
this.texting = 'sdjfskdjfhskdjfhsk';
this.methot_1 = grup_1.methot_1;
this.methot_2 = grup_1.methot_2;
})();
Вариант два: объяснить что вы хотели сделать столь хитровывернутым кодом и попробовать найти более простое решение. Kolyaj, tenshi, объясните словами свои гениальные ответы. |
можно попробовать так.
grup_1 = new (function(){
this.methot_1 = function(url)
{
alert(texting+url);
}
this.methot_2 = function()
{
alert(texting);
}
})();
grup_2 = new (function(){
//Если в глобальной области видимости нет переменной, ...
if(window.texting==undefined)
window.texting
//... то создаем ее
/*теперь внутри ЛЮБОЙ функции она доступна под именем `texting`,
*при условии, что ты не перекроеш ее внутри функции конструкцией
*вида `var texting`
*/
texting = 'sdjfskdjfhskdjfhsk';
this.methot_1 = grup_1.methot_1;
this.methot_2 = grup_1.methot_2;
this.methot_2() //пробный вызов
})();
В коде самом вроде подробно все разъяснил. Таким образом
global $qwe
/\
||
\/
if(window.qwe==undefined)
window.qwe
|
Цитата:
Gvozd, свойства объекта window != глобальные переменные. |
Цитата:
http://javascript.ru/tutorial/basic/...asti-vidimosti Цитата:
Если не верите, проверьте такую простейшую вещь
var asd='Hello'
function zxc()
{
alert(asd)
}
zxc()
|
Цитата:
Цитата:
|
Сорри, опечатался. ))))
var asd='Hello'
function zxc()
{
alert(window.asd)
}
zxc()
Более того, вот такая конструкция всегда выдает true.с чего бы?))
var asd='Hello'
function zxc()
{
alert(window.asd==asd)
}
zxc()
ЗЫ. Так-то |
Gvozd, я дико извиняюсь, но где вы тестировали ваши примеры? А то у меня первый код в 4-х браузерах выдает undefined, а второй false.
|
| Часовой пояс GMT +3, время: 02:13. |