| 
	| 
	
	| 
		
	| 
			
			 
			
				06.04.2008, 06:14
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 14.03.2008 
						Сообщений: 169
					 
		
 |  |  
	| 
				есть ли 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 
чтобы решить такую проблему. |  |  
	| 
		
	| 
			
			 
			
				06.04.2008, 09:25
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 19.02.2008 
						Сообщений: 9,177
					 
		
 |  |  
	| 
var texting;
var grup_1 = ...
var grup_2 = new (function() {
  texting = 'adfkajhdflkajdf';
  ...
})()
			 Последний раз редактировалось Kolyaj, 07.04.2008 в 11:18.
 |  |  
	| 
		
	| 
			
			 
			
				06.04.2008, 12:24
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 20.03.2008 
						Сообщений: 1,183
					 
		
 |  |  
	| 
var grup_1= new function(){};
 |  |  
	| 
		
	| 
			
			 
			
				06.04.2008, 20:21
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 12.03.2008 
						Сообщений: 183
					 
		
 |  |  
	| 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 , объясните словами свои гениальные ответы. |  |  
	| 
		
	| 
			
			 
			
				06.04.2008, 20:56
			
			
			
		 |  
	| 
		
			|  | Матрос       |  | 
					Регистрация: 04.04.2008 
						Сообщений: 6,246
					 
		
 |  |  
	| можно попробовать так. 
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
 |  |  
	| 
		
	| 
			
			 
			
				06.04.2008, 21:55
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 19.02.2008 
						Сообщений: 9,177
					 
		
 |  |  
	| 
	
 
	| Сообщение от vasa_c |  
	| Kolyaj, объясните словами свои гениальные ответы. |  
	
 Для тех, кто в танке: вы не поверите, но если переменную с помощью ключевого слова var объявить вне какой-либо функции или объекта, то эта переменная будет видна везде. Т.е. мой гениальный ответ как бы говорит, что нужно объявить переменную texting вне этих функций, тогда она будет доступна в обоих функциях, в то время как ваш гениальный ответ является всего лишь хаком к примеру и к глобальным переменным отношения не имеет никакого.
Gvozd , свойства объекта window != глобальные переменные. |  |  
	| 
		
	| 
			
			 
			
				06.04.2008, 22:04
			
			
			
		 |  
	| 
		
			|  | Матрос       |  | 
					Регистрация: 04.04.2008 
						Сообщений: 6,246
					 
		
 |  |  
	| 
	
 
	| Сообщение от Kolyaj |  
	| Gvozd, свойства объекта window != глобальные переменные. |  
	
 вот тут написано обратное
http://javascript.ru/tutorial/basic/...asti-vidimosti 
	
 
	| Цитата: |  
	| Ключевое слово var задает переменную в текущей области видимости. Если его забыть, то переменная попадет в глобальный объект window |  
	
 Более того код приведенный мной работает в Opera 9.23 ,Explorer 6 ,Mozila 5 
Если не верите, проверьте такую простейшую вещь
 
var asd='Hello'
function zxc()
{
alert(asd)
}
zxc()
 |  |  
	| 
		
	| 
			
			 
			
				06.04.2008, 22:16
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 19.02.2008 
						Сообщений: 9,177
					 
		
 |  |  
	| 
	
 
	| Сообщение от Gvozd |  
	| Если его забыть, то переменная попадет в глобальный объект window |  
	
 Все верно, т.е. станет свойством window, а не самостоятельной переменной, при этом, разумеется, будет везде доступна, вот только зачем засорять объект window?
 
	
 
	| Сообщение от Gvozd |  
	| Если не верите, проверьте такую простейшую вещь |  
	
 Найдите десять отличий между этой простейшей вещью и тем, что вы предложили в предыдущем сообщении (ну и заодно с тем, что я предложил два сообщения назад). |  |  
	| 
		
	| 
			
			 
			
				06.04.2008, 22:33
			
			
			
		 |  
	| 
		
			|  | Матрос       |  | 
					Регистрация: 04.04.2008 
						Сообщений: 6,246
					 
		
 |  |  
	| Сорри, опечатался. )))) 
var asd='Hello'
function zxc()
{
alert(window.asd)
}
zxc()
Более того, вот такая конструкция всегда выдает true.с чего бы?))
 
var asd='Hello'
function zxc()
{
alert(window.asd==asd)
}
zxc()
ЗЫ. Так-то			 Последний раз редактировалось Gvozd, 06.04.2008 в 22:43.
 |  |  
	| 
		
	| 
			
			 
			
				06.04.2008, 23:07
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 19.02.2008 
						Сообщений: 9,177
					 
		
 |  |  
	| Gvozd, я дико извиняюсь, но где вы тестировали ваши примеры? А то у меня первый код в 4-х браузерах выдает undefined, а второй false. |  |  
 
 
 
 |  |