JavaScript学习----Function

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>JavaScript Study 2015.11.9--</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css">  

    </style>
    
    <script type="text/javascript">
    //function的定义
    
    /*
    function是对象,但是与对象又有很大的不同。
    */
    function fn1(){
        alert("fn1");
    }
    
    var fn2 = fn1;//fn1,fn2拷贝内存空间
    //alert(fn1);
    //alert(fn2);
    fn2 = function(){
       alert("fn2");
    }
    
    //fn1();//fn1
    //fn2();//fn2
    
    var obj1 = new Object();
    obj1.name = "obj1";
    
    var obj2 = obj1;//obj1,obj2指向内存中的同一块空间
    
    obj2.name = "obj2";
    
    document.write(obj1.name);//obj2
    document.write("<br>");
    document.write(obj2.name);//obj2
    document.write("<br>");
    
    
    //function是对象,所以,可以作为function的参数进行传递
    function callFun(funName,arg){
       funName(arg);
    }
    
    function write(arg){
       document.write(arg);
       document.write("<br>");
    }
    
    callFun(write,"function is a arg");//write是function,这里作为参数。
    
    //Sort
    
    var as = [1,2,30,22,12,90,80];
    document.write(as.sort()); //按字符排序
    document.write("<br>");
    //怎么按数字排序呢
    function sortByNum(a,b){
       return a-b;
    }
    document.write(as.sort(sortByNum)); //按数字排序
    document.write("<br>");
    
    
    //怎么对对象排序呢
    function Person(name,age){
        this.name = name;
        this.age = age;
    }
    
    var p1 = new Person("adada",30);
    var p2 = new Person("disk",18);
    var p3 = new Person("bob",20);
    var p4 = new Person("harhar",50);
    
    as = [p1,p2,p3,p4];
    as.sort();
    for(var i=0;i<as.length;i++){
         document.write(as[i].name+","+as[i].age);
         document.write("<br>");
    }
    
    document.write("<br>");
    
    
    function sortByName(obj1,obj2){
       if(obj1.name>obj2.name){
         return 1;
       }
       else if (obj1.name<obj2.name)
       {
       return -1;
       }
       else
       return 0;
    }
    
    as.sort(sortByName);
    for(var i=0;i<as.length;i++){
         document.write(as[i].name+","+as[i].age);
         document.write("<br>");
    }
    
    function sortByAge(obj1,obj2){
       return obj1.age - obj2.age;
    }
    as.sort(sortByAge);
    for(var i=0;i<as.length;i++){
         document.write(as[i].name+","+as[i].age);
         document.write("<br>");
    }
    //如果Person有n个属性,那就需要些n个方法。
    //通用的实现方式:
    function sortByPropertyName(propertyName){
      //这里返回了一个function
       return function(obj1,obj2){
         if(obj1[propertyName]>obj2[propertyName]){
            return 1;
         }else if(obj1[propertyName]<obj2[propertyName]){
            return -1;
         }
         else return 0;
       }
    }
    as.sort(sortByPropertyName("name"));//只需要传入属性名就可以了
    for(var i=0;i<as.length;i++){
         document.write(as[i].name+","+as[i].age);
         document.write("<br>");
    }    
    
    as.sort(sortByPropertyName("age"));//只需要传入属性名就可以了
    for(var i=0;i<as.length;i++){
         document.write(as[i].name+","+as[i].age);
         document.write("<br>");
    }

    
    function sum(num1,num2){
      document.write(num1+num2);
       document.write("<br>");
    }
    //上面的语句=
    var sum = function(num1,num2){
      document.write(num1+num2);
       document.write("<br>");
    }
    
    function sum(num1){
      document.write(num1+100);
       document.write("<br>");
    }
        //上面的语句=
        
    sum=function(num1){
      document.write(num1+100);
       document.write("<br>");
    }
    //会覆盖
    sum(20);//120
    sum(20,20);//120
    
    //arguments
    function args(a1,a2,a3){
       document.write(arguments.length);
       document.write("<br>");
    }
    args(1);
    args(1,2);
    args(1,2,3);
    args(1,2,3,4);//这里并不会报错,而是超出的部分不使用
    
    
    
    
///1, 函数的内存图,与对象的区别。
// 2, Function的Sort,对象的Sort。
//3, callee apply
//4, json
//5, factory createPerson
//6, prototype的内存图。
//7, prototype重写的内存图。



    </script>
  </head>
  <body>
    <div id="wrap">
      
    </div>
  </body>
</html>

 

posted @ 2015-11-20 16:48  heavyblog  阅读(232)  评论(0编辑  收藏  举报