есть ли 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.
|
Тестировал свои примеры я под следующими браузерами:
Opera 9.23 ,Explorer 6 ,Mozila 5, под Windows И оба моих последних примера отрабатывают там именно так, как я описал. можете назвать свои браузеры, с версиями, чтоб я мог посмотреть как в них отрабатывается этот момент. |
Kolyaj, вы не поверите, я в курсе про "var", предлагаю избавится в нашей беседе от подобных саркастических пассажей.
Только человек пытается использовать что-то вроде ООП, какие там могут быть глобальные переменные? Тогда уж и просто функции можно использовать. Ваш пример будет работать так как нужно в данном конкретном случае, но по большому счету только запутает. |
Цитата:
Цитата:
Вопрос звучал про глобальные переменные, ответ соответствующий. По вашему примеру: вы считаете, что свойства одного класса, используемые в другом классе, как родные, не приведут к путаннице? |
Gvozd, IE 6, Opera 9, FF 2, Safari 3.1.
|
Цитата:
Обратите внимание там используются методы и свойства одного объекта - grup_2. Правда, описание "методов" первоначально сделано в конструкторе grup_1. Вот зачем такие выкрутасы и хотелось бы узнать у автора прежде чем давать ответы. |
Цитата:
|
а давайте вы не будете тут решать задачу, которую здесь никто не ставил?
|
tenshi, а какая задача, по вашему, была поставлена, что вы дали на нее столь глубокомысленный, лаконичный и исчерпывающий ответ
Цитата:
Нет, я конечно вижу ваши подобные ответы через тему и просто не обращаю на них внимания, но когда "и эти люди запрещают нам ковыряться в носу"... |
прокачай мудрость до 10-го левела - тогда поймёшь.
|
Что же, тролли на этом форуме уже завелись.
Есть ли тут уже модераторы? |
есть народное поверие: первое обвинение в троллинге звучит от самого злобного тролля.
|
уау, какая бурная беседа вышла,
а я всё пропустил, Gvozd и vasa_c - большое спасибо. я заметил интересную функцию, правда не понял что она означает, но мне кажется она делает похожую вещ,
prototype('Object')
|
| Часовой пояс GMT +3, время: 04:49. |