2013-06-15 2 views
3
var g = $('#go'); 
var z = $('#are'); 

У меня есть переменные, которые я хочу сделать доступными внутри класса y для alertData и hideData.Сделать переменные доступными внутри функции/класса

Что такое самый простой способ сделать это?

var y = {  

    alertData: function(){ 
     alert('z');  
    }, 
    hideData: function(){ 
     $(this).hide(); 
    } 

}; 
+0

Ну г должны работать, если вы удалите speechmarks насколько я могу сказать? – galdikas

+0

Я хочу установить их внутри y, хотя –

+2

Переменные, объявленные в более высокой области видимости, всегда доступны в более низких областях, но вы предупреждаете строку, а не переменную. – adeneo

ответ

0

либо вы можете сделать г и г глобальной переменной, а затем они будут доступны в любой функции, которую вы хотите.

ИЛИ вы можете передать переменные при вызове данных о бедствии и скрыть данные и это предпочтительный подход, и теперь вы функция не зависят от глобальных переменных и в дальнейшем может быть использовано в других местах также

0

Создание два местных переменные в y и назначить их извне, чтобы они были частью объекта. Поступая таким образом, вы можете использовать их там, где захотите внутри y.

+0

Каков правильный способ создания переменных внутри объекта, чтобы они были доступны для всего внутри объекта? –

0
window.g = $('#go'); 
window.z = $('#are'); 

function somefunction(){ 
    console.log(g); 
    console.log(z); 
} 
+0

Вы не можете использовать свойство 'var' _Object_; 'window' указано _Object_. 'var window.foo = 'bar';' 'SyntaxError: Неожиданный токен. –

+0

Правильно, мое плохое. Исправлена. –

3

Вы всегда можете сделать:

var y = {  
    g : $('#go'), 
    z : $('#are'), 
    alertData: function(){ 
     alert(this.z);  
    }, 
    hideData: function(){ 
     this.g.hide(); 
    } 
}; 

или

var y = {  
    alertData: function (elem){ 
     alert(elem.prop('id'));  
    }, 
    hideData: function (elem){ 
     elem.hide(); 
    } 
}; 

var g = $('#go'); 
var z = $('#are'); 

y.alertData(g); 
y.hideData(z); 

Если вы ищете змеевидные методы, вы должны использовать $.fn для создания методов.

0

Добавить это следующим образом:

var y = {  
    g:"", 
    z:"", 
    alertData: function(){ 
     alert(this.z);  
    }, 
    hideData: function(){ 
     this.g.hide(); 
    } 

}; 

и присвоить значения с помощью y.g = anything и y.z = anything

0

Или, если они должны быть частными, вот шаблон модуля:

var y = (function() { 
    var g = $('#go'); 
    var z = $('#are'); 
    return { 
     alertData: function() { 
      alert(z); 
     } 
     hideData: function() { 
      z.hide(); 
     } 
    } 
}()) 

Это сделают g и z видны всем функциям объекта, возвращаемого вышеуказанной функцией самозапускания, whi le y.z (или y.g) выдает сообщение об ошибке.

0

определение простой varible становится глобальным в javascript, поэтому его не удовлетворяет свойство oops i.e encapsulation. Так что, если вы запустите это, что будет работать .:

g = $('<p>'); 
z = $('#are'); 

function somefunction(){ 
console.log(g); 
console.log(z); 
} 

somefunction() 

г и г стать глобальной переменной ..

Смежные вопросы