如何在JavaScript中引用父变量?像_parent.myvar

时间:2013-04-06 05:04:39

标签: javascript variables scope

我在脚本的主根

中设置了变量
var name="blah";

我需要在一个函数中引用它,而不是直接在它的参数中传递它。我可以使用“var”初始化程序在全局范围内设置变量,这对我的函数有效。但是,我仍然需要知道如何执行此操作。

在Flash(AS2 / AS3)中,它就像_root.myvar_parent.myvar

一样简单 在JS中

样品:

var name="blah";
var sex="m";
templateMe('name,sex'); // declared the actual NAME of the var not the var itself 

然后.. templateMe函数只使用传入函数的“字符串”作为变量名及其对应的值

意味着'name'字符串变为

var name=eval(name) 

这是函数的一部分:

vars_r =  vars.split(",");
r_count = vars_r.length;

if(r_count < 1 ){
    return template;
}

var i=0;
var needles = new Array();
var replacements  = new Array();;
for(i=0; i < 2; i++){ //ti <-- use own i counter coz it conflicts w/ global i
    needles.push("{{"+ vars_r[i] + "}}");
    replacements.push( eval( vars_r[i]) );

}

等...

希望现在更有意义

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你根本不需要传递变量。

变量已经是全局的,所以你可以直接引用它们。

例如:

var value1 = "some value";  /* these variables are global, so you can refer to them from anywhere in your script */
var value2 = 25;            /* ********************************************* */
someFunction();

someFunction看起来像这样:

function someFunction() {
    var newValue = value2 + 3; 
    alert(newValue); /* Alerts 28. */
    alert(value1); /* Alerts 'some value'. */
}

如果您需要一个学习JavaScript的地方,webplatform.org可能是a good place to start

希望这有帮助!

答案 1 :(得分:0)

全局变量是window对象的属性。因此,如果您需要在名为varname的字符串变量中使用其名称时引用全局变量,则可以使用window[varname],如下所示:

var foo = 'bar';
var varname = 'foo';
console.log( window[varname] );

打印:

bar

斯蒂芬指出,有可能有更好的方法来解决整个问题,但如果你真的需要以这种方式访问​​全局变量,这种方法可以正常工作。

查看您的代码,我认为您将替换此行:

replacements.push( eval( vars_r[i]) );

使用:

replacements.push( window[ vars_r[i] ] );

虽然我不确定我理解这段代码在做什么。无论如何,window[varname]eval(varname)好很多。