2013-05-20 7 views
0

Javascript,Получить переменную от функции, которая имеет переменную

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

<script> 
var variable = function(snap) { 
    var header= snap.head(); 
    var name = snap.name(); 
}; 

alert(variable.name); 
</script> 

Я хочу, чтобы использовать переменную.name вне функции. Если возможно.

+0

Вы не можете, по крайней мере, не так. Прочитайте «закрытие», и вы поймете, почему это невозможно. – elclanrs

+0

Создайте контейнерный объект и [смотрите здесь] (http://stackoverflow.com/questions/3750082/javascript-oop-best-practices/13074081#13074081) для указания о том, как изменить доступность для чего вы хотите. очень хорошо для страниц и элементов управления. –

ответ

3

Рассматривайте функцию «переменная» как класс. Измените внутренние переменные на СВОЙСТВА функции. (И не называйте функцию «переменная», это просто нехорошо).

var Variable = function(snap) { 
    this.name = snap.name() // 
} 

var the_var = new Variable(snap_func); 
console.log (the_var.name()); 
+0

+1 этот шаблон конструктора, по-видимому, является тем, что пытается выполнить ОП. – Christophe

+0

Говорит, что snap_func не определен. – Brian

+0

snap_func - это то, что я составил - вы передадите имя любой функции, которую вы пытаетесь передать в метод «Variable». – rGil

0

Вы можете удалить var и заставить его работать таким образом. Если вы не можете этого сделать, создайте новый метод getName и определите его так.

this.getName = function(){ 
    return name; 
} 

Для его вызова вы должны использовать переменную.getName();

Его лучше сделать способ доступа таким образом, чтобы вы могли проверить, есть ли у него что-то, что вы, возможно, не захотите отправить.

+0

Поощрение OP для установки глобальной переменной в объекте окна является плохой практикой, поскольку ее можно переписать из любого места, а код не модулируется в область, которая касается нарушения основных принципов проектирования для эффективного и управляемого кодирования javascript. –

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