我已经创建了一个函数来对值进行求和,但它没有得到预期的结果,返回0
function ints(t) { this.t=t; }
ints.prototype.sum = function() {
var sum = 0;
var value;
for (var _ in this.t) {
value = _;
sum += value;
}
return sum;
}
var s = new ints(1, 2, 3, 4, 5);
if (s.sum() !== 15) {
alert("FAIL: " + s.sum());
}
如何使用该对象修复它?我不想使用原语
答案 0 :(得分:1)
如果要使用传递给函数的所有参数,请使用arguments
对象:
function ints(t) {
this.t = arguments;
}
在sum
函数中,使用绑定变量作为索引,使用for-in
迭代“数组”:
for (var _ in this.t) {
value = this.t[_];
sum += value;
}
答案 1 :(得分:0)
你传递了一组参数,但忽略了除了堡垒之外的所有参数,你试图将其视为一个数组。
传递一个实际上是数组的参数。
var s = new ints([1, 2, 3, 4, 5]);
答案 2 :(得分:0)
MOdified代码:
变化。将所有参数保存在数组this.t
中。
使用普通for循环而不是for in
作为for in
也将添加原型属性。
function ints(t)
{
if(typeof t == 'object'){ // if first argument itself an array.
this.t = t;
}else{
this.t = Array.prototype.slice.call(arguments, 0);
}
}
ints.prototype.sum = function() {
var sum = 0;
console.log(this.t);
for (var i =0; i<this.t.length; i++) {
sum += this.t[i];
}
return sum;
}
var s = new ints(1, 2, 3, 4, 5);
if (s.sum() !== 15) {
alert("FAIL: " + s.sum());
}