Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.04.2014, 19:05
Интересующийся
Отправить личное сообщение для ruzik Посмотреть профиль Найти все сообщения от ruzik
 
Регистрация: 13.07.2013
Сообщений: 20

Захват переменных функцией
Здравствуйте, у меня есть код:
var funcNameArray = ["sin", "cos", "tan", "asin", "acos", "atan", "atan2", "cot", "sec", "csc"];

    //Create shell
    for (var i in funcNameArray) {

        var funcName = funcNameArray[i], obj = {};
        var func = math[funcName];

        obj[funcName] = function (x) {
            return func(GetRadAngle(x));
        };

        math.import(obj, { override: true });
    };


Он последовательно переопределяет математические функции в мат библиотеке math.js(может это поможет). И вся проблема в том, что все функции в результате указывают на одну анонимную, а она в свою очередь использует func, которая как я понял оказалась одна на всех. Как это можно исправить?
Ответить с цитированием
  #2 (permalink)  
Старый 12.04.2014, 19:09
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Что требуется? Ничего не понял
Зачем переопределять все функции?
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 12.04.2014, 21:04
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

http://javascript.ru/basic/closure#p...-ispolzovaniya
Ответить с цитированием
  #4 (permalink)  
Старый 12.04.2014, 21:50
Интересующийся
Отправить личное сообщение для ruzik Посмотреть профиль Найти все сообщения от ruzik
 
Регистрация: 13.07.2013
Сообщений: 20

Сообщение от Erolast Посмотреть сообщение
http://javascript.ru/basic/closure#p...-ispolzovaniya
Здравствуйте, это как раз то, что было нужно, судя по описанию.
Правда я видимо чего-то все же не понял, раз результат получился такой же:
var funcNameArray = ["sin", "cos", "tan", "asin", "acos", "atan", "atan2", "cot", "sec", "csc"];

    //Create shell
    for (var i in funcNameArray) {
        var funcName = funcNameArray[i], obj = {};
        var func = math[funcName];

        obj[funcName] = function (x) {
            return (function () {
                return func(GetRadAngle(x));
            })(x);
        };

        math.import(obj, { override: true });
    };
Ответить с цитированием
  #5 (permalink)  
Старый 12.04.2014, 21:51
Интересующийся
Отправить личное сообщение для ruzik Посмотреть профиль Найти все сообщения от ruzik
 
Регистрация: 13.07.2013
Сообщений: 20

Сообщение от nerv_ Посмотреть сообщение
Что требуется? Ничего не понял
Зачем переопределять все функции?
В math.js просто нет возможности задавать режим углов для тригонометрических функций в настройках и тд, максимум sin(60 deg) написать, вот и решил написать свою оболочку, которая со всем этим работает)
Ответить с цитированием
  #6 (permalink)  
Старый 12.04.2014, 22:06
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

for (var i in funcNameArray) {
	var funcName = funcNameArray[i], obj = {};

	obj[funcName] = function () {
		var func = math[funcName];
		return function (x) {
			return func(GetRadAngle(x));
		};
	}();

	math.import(obj, { override: true });
};


но лучше так
funcNameArray.forEach(function (funcName) {
	var obj = {};
	obj[funcName] = function (x) {
		return math[funcName](GetRadAngle(x));
	};
	math.import(obj, { override: true });
});

Последний раз редактировалось Octane, 12.04.2014 в 22:09.
Ответить с цитированием
  #7 (permalink)  
Старый 12.04.2014, 22:13
Интересующийся
Отправить личное сообщение для ruzik Посмотреть профиль Найти все сообщения от ruzik
 
Регистрация: 13.07.2013
Сообщений: 20

Спасибо, работает!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько сценариев одной функцией Marker Events/DOM/Window 19 19.01.2013 00:40
Избавление от глобальных переменных при проходе алгоритма через несколько ивентов shoo Общие вопросы Javascript 4 13.11.2012 12:07
Назначение переменных из вне qazibum Общие вопросы Javascript 4 16.08.2012 02:00
Нужно узнать какая из трех переменных больше! shureg Общие вопросы Javascript 2 24.08.2011 11:05
Как вывести возвращаемое функцией значение не через модальное окно? Bandicoot Общие вопросы Javascript 1 10.03.2011 18:34