JavaScript随笔之——函数用法

1、reduce函数用法:  

$(function(){

   // arrowMouseOver();

    Array.prototype.reduce=null;  //将内置reduce函数设置为null

    var eleResult=document.getElementById("result");



    console.log=function(result){

        var text=document.createTextNode(result);

        var br=document.createElement("br");

        //var name=document.createAttribute("data-name");

        eleResult.appendChild(text);

        eleResult.appendChild(br);

        //br.setAttribute(name,"zhu");

    };

    if(typeof Array.prototype.reduce!="function"){

        Array.prototype.reduce=function(callback,initialValue){   //自定义reduce函数

            var previous=initialValue,k= 0,length=this.length;

            if(typeof initialValue==="undefined"){   //如果没传入初始值,则previous等于数组的第一个元素

                previous=this[0];

                k=1;

            }

            if(typeof callback==="function"){

                for(k;k<length;k++){

                    this.hasOwnProperty(k)&&(previous=callback(previous,this[k],this))

                }

            }

            return previous;

        }

    }

    var sum=[1,2,3,4].reduce(function(previous,current,array){

        return previous+current;

    });

    console.log(sum);//10

    var matrix=[

        [1,2],[3,4],[5,6]

    ];

    var flattn=matrix.reduce(function(previous,current){

       return previous.concat(current);

    });

    console.log(flattn);// [1, 2, 3, 4, 5, 6]
});

注:reduce()函数,实现对数组的累加功能,需要传递一个callback函数和初始值initialValue,

假设callback函数它有个传入参数,prev和next,index和array。prev和next你是必须要了解的。

一般来讲prev是从数组中第一个元素开始的,next是第二个元素。

但是当你传入初始值(initialValue)后,第一个prev将是initivalValue,next将是数组中的第一个元素,如果没传入初始值,则表示取数组的第一个元素作为初始值。

 

function Person(name,age){

    this.name=name;

    this.age=age;

    alert("My name is "+arguments[0]+", age is "+ arguments[1]);

    this.sayHello=function(){

        alert("Hello");

    }

}

function Student(name,age,stuID,classID){

    Person.apply(this,arguments);

    this.studentID=stuID;

    this.classID=classID;

}

var person1=new Person("zhu",23);

var student1=new Student("stu1",12,1001,1);
注:Student对象继承Person对象,只需要在Student对象里面加一个,Person.apply(this,arguments)即可,不过只有在实例化时,才能看到效果。

你可能感兴趣的:(JavaScript)