js大神进来看看+++++++++++++++++

怎么会出来函数?哪里错了?

 arr = [5,5,5,5];
Array.prototype.sum = function(){
    var sum = 0;
    for(var i in this){
        sum += this[i];
    }
    return sum;
}

document.write(arr.sum()+"</br>");

图片说明

跪求讲解 纠结中。。。。。

就是来打酱油的,请不要见怪,没有积分

arr = [5,5,5,5];
Array.prototype.sum = function(){
var sum = 0;
for(var i =0;i<this.length;i++){
sum += this[i];
}
return sum;
}

document.write(arr.sum()+"</br>");

    这样就好了,for in循环多用于json循环,数组循环相加的时候适当的时候终止循环,你可以console.log下this[i]是什么东西

不要for in,for in会一起遍历扩展的属性,包括方法,所以一起返回了你的sum函数体

用for代替for in一种很好的解决方式,因为for in 遍历的并不是你想像中的数组,而是对象,当你遍历玩四个五之后并没有结束循环,导致报错

sum里的this对象也是有sum方法的,而且是可以枚举的,所以会将sum方法一起遍历

感觉上面的说的的挺对的,无聊在方法里加了一个终止就显示正确了
var arr = new Array (5,5,5,5);
Array.prototype.yyyy = function (){
var mm = 0;
var len=this.length;
for(var m=0;m<len;m++){
mm+=this[m];
if(m==(len-1)){
return mm;
}
}

return mm;

}
document.write(arr.yyyy());

这不就出来了嘛
var arr = [5,5,5,5];
var sum = 0;
for(var i=0;i<arr.length;i++ ){
sum += arr[i];
}
console.log(sum);
return sum;