如何在jQuery包装器中使用字符串内容来定位变量?

时间:2010-09-19 13:06:40

标签: javascript jquery dom

基本上我所追求的是这个,

var foo = 'I am foo!';
alert(window['foo']);

// output = I am foo!

这在jQuery包装器中不起作用,我明白这可能是由于jQuery重命名了窗口对象或诸如此类的东西。如果有人知道如果在jQuery包装器中这是可能的话,我会很感激这些知识!

3 个答案:

答案 0 :(得分:2)

foo = "I am foo!";

如果你的var行周围有一个函数范围,它会将它定义为局部变量而不是全局变量。这不是jQuery“重命名窗口对象”或任何愚蠢的东西,它只是var的工作方式。我个人在做

window.foo = "I am foo!";
// or
window["foo"] = "I am foo!";
但是,为了明确你想要定义一个全局变量。或者用评论说出来。

答案 1 :(得分:1)

jQuery没有重命名窗口对象 - jQuery实际上在它下面(window.jQuery)。

试试这个:

window.foo = 'I am foo!';
alert(window.foo);

答案 2 :(得分:0)

对于非全局变量或私有变量,可以在字符串表达式上使用eval;

var JohnDoe = function(foo){
  var x;
  eval("x = foo");
  return x;
};

//now we can setup foo values
JohnDoe("MAKUKULA")
=> "MAKUKULA"

但可能会指出以下内容:

  

此功能已过时。虽然它可能仍然适用于某些浏览器,   不鼓励使用它,因为它可以随时删除。尝试   避免使用它。