将函数参数作为参数传递给 JavaScript






2.67/5 (9投票s)
2005年8月6日

148592
如果你需要在 JavaScript 中使用类似 C 语言的输入/输出参数,或者类似 VB 语言的“按引用”函数参数,这里有一些帮助。
引言
当用作 JavaScript 中的函数参数时,数字和字符串对象按值比较,函数按引用比较……数组对象(数组)似乎是按引用传递参数的唯一选择,因此我们将一个大小为 1 的数组包装到一个新的对象类中,该类设置/获取第一个元素。
function param()
{
this.array = new Array(1);
this.setValue = function(v) { this.array[0] = v; }
this.getValue = function() { return this.array[0]; }
}
这是一个简单的对象,包含一个 1 个元素的内部数组,可以保存任何内容(甚至对象引用),并公开两个简单的赋值和检索方法。
你通常会在需要多个返回值的情况下使用它。
// declare a variable as a parameter
var s = new param;
// issue a function call using the parameter
var o = output(dText.innerHTML, s, 'Hello, world.');
// the function is obviously designed to treat the 2nd argument as a parameter...
function output(arg1, arg2, arg3)
{
...
// ...so that eventually it can assign a value to it.
arg2.setValue(a + b % 10);
...
}
// when ready to retrieve the output value, use the retrieval function.
dResult.innerHTML += s.getValue() + ' (' + o + ')';
就这样了。你可以声明并传入任意数量的参数,只要你的代码通过成员函数处理它们;如果需要将参数作为数组处理(例如,与其他数组连接),你也可以使用内部数组属性。
为什么不直接使用一个固定大小的数组呢? 这是一个很好的问题。实际上,我只是想提高代码的可读性,并且这种方式看起来比在函数中处理第 0 个元素更好。也许这浪费时间,但是现在我喜欢“放慢速度”的方式了。