我正在尝试制作新闻系统。 我有一个表,其中每个元素都是一个产生文本的函数。
我有一个循环,检查news + number是函数还是未定义。 如果它是一个函数,那么我将news + number推送到数组[number]。
我正在使用eval,因为我不知道将函数名称和数字推送到数组的任何其他方法。
CODE:
var tablicaNewsow = [news1,news2]
function addNews ()
{
var counterArray = 0;
var fName = " ";
fName = "news1";
while (eval('typeof' + " " + fName) == "function")
{
//---------------sprawdzenie czy news istnieje----------
fName = "news" + (counterArray+1);
if (eval('typeof' + " " + fName) == "function")
{
//------------jest news
tablicaNewsow.push(eval(fName+"()"));
}
else
{
//-----------nie ma newsa
}
counterArray++;
}
}
注意:这是我系统中的代码段,它会推送数组中的函数。
抱歉我的英语不好。
答案 0 :(得分:3)
我认为你正在寻找window["news"+number]
(或类似)。可以通过这种方式访问任何全局变量。
否则你可以使用数组而不是索引多个变量名。
答案 1 :(得分:0)
这是一个代码示例,期望函数是全局的:
function addNews ()
{
var counterArray = 0;
var f = window["news1"];
while (typeof f == "function")
{
//---------------sprawdzenie czy news istnieje----------
f = window["news" + (counterArray+1)];
if (typeof f == "function")
{
//------------jest news
tablicaNewsow.push(f);
}
counterArray++;
}
}
答案 2 :(得分:0)
您可以使用 this :
来引用当前作用域中的函数名称if (typeof(this[fName]) == 'function') {
this[fName]();
}
或者,如果你在一个对象中,但是你知道这些函数存在于全局范围内,你可以使用 window :
if (typeof(window[fName]) == 'function') {
window[fName]();
}
当然,如果上述代码段在全局/窗口范围内运行 - 或者甚至在位于全局/窗口范围内的函数中,这= =窗口,任一选项都可以。