在对象的属性函数中传递多个参数以避免多次调用

时间:2017-02-05 22:11:35

标签: javascript

blah = [[1,"a"], [2,"b"], [3,"c"]]
var example = {x: blah };
example.addItem = function(number,letter){
     this.x.push([number,letter])
};

example.addItem(4, "d");
example.addItem(5, "e");

我想知道如何使用一次调用添加多个值。

2 个答案:

答案 0 :(得分:2)

函数可以接受任意值的序列 - 使用数组(显式,单个参数)或使用arguments对象(隐式地,使用可变数量的参数)。

明确地 - 接受一系列项目:

function add(items) {
  for (var i = 0; i < items.length; i++)
     x.push(items[i]);
  }
}

add([[4, "d"], [5, "e"]])

隐式#1 - 接受以单个值提供的任意数量的参数:

function add(/* item1, item2, .. */) {
  for (var i = 0; i < arguments.length; i++)
     x.push(arguments[i]);
  }
}

add([4, "d"], [5, "e"])

隐式#2 - 接受以对提供的任意数量的参数:

function add(/* k1, v1, k2, v2, .. */) {
  for (var i = 0; i < arguments.length; i += 2)
     x.push([arguments[i], arguments[i+1])
  }
}

add(4, "d", 5, "e")

Array.spliceconcat可能有用;为了简单和一致,没有显示这些内容。

答案 1 :(得分:0)

如果您不想更改addItem,可以执行此操作:

[[4, "d"], [5, "e"]].forEach((params) => example.addItem.apply(example, params))