<script>
//in one script
var someVarName_10 = 20;
</script>
Run Code Online (Sandbox Code Playgroud)
我希望通过变量名称从另一个脚本访问此变量.窗口对象很简单,是否可以使用局部变量?
我的意思是通过以下代码访问此var:
<script>
alert(all_vars['someVar' + 'Name' + num]);
</script>
Run Code Online (Sandbox Code Playgroud) 如果要动态使用全局函数和变量,可以使用:
window[functionName](window[varName]);
Run Code Online (Sandbox Code Playgroud)
是否可以对本地范围内的变量执行相同的操作?
这段代码工作正常,但目前使用eval,我正在考虑如何做到这一点.
var test = function(){
//this = window
var a, b, c; //private variables
var prop = function(name, def){
//this = window
eval(name+ ' = ' + (def.toSource() || undefined) + ';');
return function(value){
//this = test object
if ( !value) {
return eval('(' + name + ')');
}
eval(name + ' = value;')
return this;
};
};
return {
a:prop('a', 1),
b:prop('b', 2),
c:prop('c', 3),
d:function(){
//to show that they are accessible via to methods
return …Run Code Online (Sandbox Code Playgroud) 基本上这是一个如何访问本地范围处理程序的问题.我试图为全局变量定义实现类似的东西,如:
window['newObject'] = "some string";
alert(newObject);
Run Code Online (Sandbox Code Playgroud)
但对于当地范围.现在我只有解决方案是使用evals:
eval("var newObject='some string'");
Run Code Online (Sandbox Code Playgroud)
但这是一个非常丑陋的解决方案......最好的方法就是在window []解决方案中使用一些本地范围的引用,但我从来没有听说过任何对本地范围的引用......有什么想法吗?
示例如下:
function x(arg)
{
localScope[arg.name]=arg.value;
alert(sex);
}
x({name:"sex", value:"Male"});
Run Code Online (Sandbox Code Playgroud) 在 Javascript 中,我习惯于通过使用[]操作符来“动态”访问已知命名空间中的变量(如果我在这里使用了错误的词,请纠正我)。例如(来自全局命名空间):
var a = 1;
window['a']; # => 1
Run Code Online (Sandbox Code Playgroud)
或者来自对象类型命名空间:
var a = { b: 1 };
a['b']; # => 1
Run Code Online (Sandbox Code Playgroud)
我熟悉如何this确定的基础知识:
var a = function(){ return this['c']; };
var b = { c: 1 };
a.apply(b); # => 1;
Run Code Online (Sandbox Code Playgroud)
但是在函数本身内,我如何访问我刚刚实例化(或重新定义)的局部变量var?
即,我希望以下函数调用返回1但不调用a:
function(){
var a = 1;
return a;
}
Run Code Online (Sandbox Code Playgroud)
你不能使用,window['a']因为a是在本地定义的,你不能使用,this['a']因为this根据调用函数的上下文而改变。
在现实环境中,我会简单地重构以避免动态创建和访问局部变量,因为这通常是一个坏主意,但作为一个学术问题,我很好奇是否可以a通过其字符串名称进行访问。
可能重复:
有没有办法使用包含变量名称的字符串访问javascript变量?
JavaScript:通过名称字符串动态获取局部变量
一个简单的代码来说明我的问题 -
var chat_1 = "one";
var chat_2 = "two";
var id = "1";
var new = ?? variabalize( 'chat_' + id )
Run Code Online (Sandbox Code Playgroud)
我希望变量new赋值变量 - chat_1是"one"