есть ли 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, время: 09:35. |