Захват переменных функцией
Здравствуйте, у меня есть код:
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, которая как я понял оказалась одна на всех. Как это можно исправить? |
Что требуется? Ничего не понял :)
Зачем переопределять все функции? |
|
Цитата:
Правда я видимо чего-то все же не понял, раз результат получился такой же:
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 });
};
|
Цитата:
|
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 });
});
|
Спасибо, работает!
|
| Часовой пояс GMT +3, время: 20:23. |