2013-02-15 4 views
0

Редактировать: решил сам. Я сделал свою работу, окружив свой код в классе, так что @/это имеет в виду мой объект, а не окнаОбернутая область coffeescript - используйте значение переменной для вызывающей функции


Я пишу CoffeeScript сценарий, без использования класса. Мой Javascript код обернут в anonomous функции:

(function() { ... }).call(this) 

У меня есть список флажков, как завтра, вчера, на следующей неделе, в следующем месяце и так далее. пользователь может выбрать один или несколько из них. Вместо того, чтобы проверять, что выбрал пользователь, я храню эти флажки classnames (завтра, nextWeek ...). Вместо того, чтобы проверять, какие у меня есть имена классов, а затем вызывать метод appropiate, я создал методы, соответствующие именам классов.

Если мой завтра) был определен (на глобальном масштабе я бы назвал это так:

this[expression]() 

где выражение держать имя класса, например, завтра.

для этой работы я определил мои функции, как это:

this.tomorrow = function() { 
     return console.log("I was triggered"); 
    }; 

завтра() теперь определяется на глобальном масштабе. Есть ли способ не определять функцию в глобальной области без особых усилий?

+0

Что именно ваш вопрос? Если у вас есть глобально определенная функция, а 'this' - это объект' windows', вы можете вызывать свои функции с помощью 'this [expression]()'. – Amberlamps

+0

@Amberlamps: Использование coffeescript и обертывание не связано с тем, что у вас код cludder глобального масштаба ... – smarty

+0

Я знаю! Возможно, в следующий раз вы сформулируете свой вопрос немного более точно. Если вы обмениваете свой код анонимной функцией и каким-либо образом не касаетесь глобальной области, каким образом вы должны получить доступ к этим функциям вне анонимной функции? Вы можете определить один объект, который доступен по всему миру, и определить всю вашу функцию внутри этого объекта. – Amberlamps

ответ

0

Я выполнил эту задачу, завернув свой код в класс, так что @/это относится к моему объекту, а не к окну.

@[expression]() 

теперь работает как предназначено

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