如果我有一个构造函数并希望将参数值和输出相加到内部方法,我想我可以执行以下操作:
function Stats(a, b, c, d, e, f) {
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.e = e;
this.f = f;
var total = 0;
var array = [a, b, c, d, e, f];
var len = array.length;
this.sum = function() {
for(var i = 0; i < len; i++) {
total += array[i];
}
return total;
};
}
var output = new Stats(10, 25, 5, 84, 8, 44);
console.log(output);
查看控制台时,'total'为0。
我确信我的逻辑完全失败了,所以如果你有建议如何改善这个(以及总和),我很乐意阅读它们。
答案 0 :(得分:3)
function Stats(){
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
Arguments变量包含数组中函数的所有参数。
不确定你想要在那里实现什么,但我认为在那里查看你的变量堆可能很有用
答案 1 :(得分:3)
这可以缩写。
function Stats(var_args) {
var sum = 0;
// The arguments pseudo-array allows access to all the parameters.
for (var i = 0, n = arguments.length; i < n; ++i) {
// Use prefix + to coerce to a number so that += doesn't do
// string concatenation.
sum += +arguments[i];
}
// Set the sum property to be the value instead of a method
// that computes the value.
this.sum = sum;
}
var output = new Stats(10, 25, 5, 84, 8, 44);
// You can use a format string to see the object and a specific value.
console.log("output=%o, sum=%d", output, output.sum);
答案 2 :(得分:1)
你必须调用sum - 输出是对象:
console.log(output.sum());
并且为了改进你的课程,如果我想做的就是总结它们,我会继续做一些更普遍的事情来限制我的参数的数量:
function Stats() {
this.total = (function(args){
var total = 0;
for(var i = 0; i < args.length; i++) {
total += args[i];
}
return total;
})(arguments);
}
var output = new Stats(10, 10, 5, 10, 10, 10,100,24,1000);
console.log(output.total);
答案 3 :(得分:1)
function Stats(a, b, c, d, e, f) {
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.e = e;
this.f = f;
this.sum = Array.prototype.reduce.call(arguments, function (x, y) {
return x + y;
}, 0);
}
var output = new Stats(10, 25, 5, 84, 8, 44);
console.log(output);
答案 4 :(得分:1)
优化版本,我认为,可以满足您的需求:
function Stats() {
var _arguments = arguments;
this.sum = function() {
var i = _arguments.length;
var result = 0;
while (i--) {
result += _arguments[i];
}
return result;
};
}
var output = new Stats(10, 25, 5, 84, 8, 44);
console.log(output.sum());
答案 5 :(得分:0)
根据您编写代码的方式,您应该这样做
console.log(output.sum());
为了获得所需的输出