65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.67/5 (9投票s)

2005年8月6日

viewsIcon

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 个元素更好。也许这浪费时间,但是现在我喜欢“放慢速度”的方式了。

© . All rights reserved.