变量作为参数再次传递回变量
Variable passed as Parameter back to Variable again
好的,我不知道我是否能够完全描述我正在做的事情的范围,但希望我能在这里传达一些内容,希望有人能理解。所以…
我在javascript中定义了这些全局变量,即:
var abc = '';
var def = '';
var ghi = '';
有了这些变量,我以后可以通过函数在脚本中定义它们。因此,它们稍后可被其他函数重用。那部分我做得很好。现在我有一个有趣的想法,让我困惑在哪里。在这种情况下,变量最终是我从一个函数传递到另一个函数的对象,我可以使用它进行各种比较,并根据需要更新它。现在我已经到了需要在一个特定函数的末尾重新定义整个对象的地步。但我只是在物体本身周围传递,所以失去了对哪个物体是起点的参考。
所以现在我想知道有没有一种方法可以重新定义它,比如说我的功能是
function monkey(var)
{
//code to do stuff
//something here after stuff to redefine var as the object it once was referenced
//example ghi = something_from_code_generation_above
}
monkey(abc);
monkey(def);
monkey(ghi);
其中,在进行类似调用之后,abc对象更新、def对象更新或ghi对象更新。但将其限制在功能范围内,而不是像那样通过关闭
ghi = monkey(ghi);
我知道如何做到这一点的唯一方法是将封闭作用域作为一个额外的参数传递,并传递名称,而不是变量的值。
monkey(window, "abc"); // sends the global variable "abc" and allows it to be modified
function monkey(scope, name)
{
var v = scope[name];
// do stuff to v
scope[name] = whatever; // destructively updates the variable in the original scope
}
如果您已经知道传递的所有变量都将在特定的范围内(例如,它们都是某个已知命名对象的一部分),则可以通过字符串传递变量名。
如果它们都是全局变量,正如你在问题中指出的那样,请执行:
monkey("abc"); // instead of monkey(abc);
function monkey(name)
{
var v = window[name];
window[name] = whatever; // updates the global variable by name
}
不确定这是你想要实现的。
function monkey(my_var)
{
console.log('Im ', my_var.id);
}
abc = {id: 'abv'};
def = {id: 'def'};
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 参数变量出现ngTable指令问题
- 我不能使用变量作为javascript参数
- HTML 按钮点击函数无法使用 jQuery 变量作为参数
- toString似乎导致setTimeout不总是为toString的变量参数执行函数
- 如何使用一些变量参数从javascript函数调用 asp.net C#函数并从C#函数获取字符串返回
- 使用变量参数创建新的 JavaScript 对象
- 将变量参数传递给函数 - JavaScript
- 在onClick函数中传递c#变量参数
- 将变量参数传递给函数
- 使用变量参数直接调用Addthis Toolbox
- 从shell向spidermonkey javascript传递变量参数
- 使用变量/参数作为数组标识符
- 在javascript中如何在不使用参数的情况下传递变量参数
- 动态添加事件侦听器.函数触发,但我如何发送一个变量参数
- 传递字符串变量参数node.js不表达
- 调用带有变量参数的函数指针
- 如何使Javascript定时器为变量参数工作
- JavaScript:一个特殊的变量/参数
- 如何使用jquery将变量参数传递给匿名函数