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>
时间: 2024-10-26 03:33:37

JavaScript学习----Function的相关文章

JavaScript学习总结(四)function函数部分

转自:http://segmentfault.com/a/1190000000660786 概念 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. js 支持两种函数:一类是语言内部的函数(如eval() ),另一类是自己创建的. 在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它.(该变量的作用域是局部的). 您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量. 函数调用 有如下四种调用js函数的方式

JavaScript学习总结(十五)——Function类

在JavaScript中,函数其实是对象,每个函数都是Function类的实例,既然函数对象,那么就具有自己的属性和方法,因此,函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定. 一.函数的声明 方式一:常规方式 1 function sum1(num1,num2){ 2 return num1+num2 3 } 方式二:函数表达式 1 var sum2=function(num1,num2){ 2 return num1+num2; 3 }; 方式三:动态创建函数(这种方式用得不多)

JavaScript学习之DIV层与图像

DIV层与图像 一.设计一个可定位的层 1.设置位置(position)和大小 (1)绝对定位(absolute):以页面边框为参照,只要设置好绝对位置,那么元素的位置会始终固定在距离边框某个位置的距离. 绝对定位有两个属性:left和top,分别是距离网页左边和网页顶部的绝对位置,可借助style属性直接设置: style="position:absolute;left:距离左边距离;top:距离顶部距离" (2)相对定位(relative):需要有一个参照元素,设置好相对位置和参照

JavaScript学习05 定时器

JavaScript学习05 定时器 定时器1 用以指定在一段特定的时间后执行某段程序. setTimeout(): 格式:[定时器对象名=] setTimeout(“<表达式>”,毫秒) 功能:执行<表达式>一次. 例子: <!DOCTYPE html> <html> <head> <title>timer1.html</title> <meta http-equiv="keywords" co

Javascript学习--------认识window窗口对象

window对象: Window 对象表示浏览器中打开的窗口. 可以通过window对象设置窗口的大小,位置等. 还可以控制是否加载网页等. window对象集合: 集合 描述 frames[] 返回窗口中所有命名的框架. 该集合是 Window 对象的数组,每个 Window 对象在窗口中含有一个框架或 <iframe>.属性 frames.length 存放数组 frames[] 中含有的元素个数.注意,frames[] 数组中引用的框架可能还包括框架,它们自己也具有 frames[] 数

javascript学习笔记---ECMAScript-判断变量类型

判断类型之前,先要清楚有哪些类型. (理理思路:程序由数据和方法构成,数据由简单数据和复杂数据构成) 即类型有: 数据(简单数据:boolean,string,num,undefined,null.复杂数据:object), 方法(function) 万能的typeof,神一样的方法 typeof(1);// num typeof("hello");// string   typeof(false);// boolean var vFlag; typeof(vFlag);// unde

javascript学习3-自定义函数

javascript自定义函数,很简单的小例子. 实现效果:输入两个数和运算符号,根据不同运算符对数据进行计算,返回值 代码: 1 <html> 2 <head> 3 <script type="text/javascript"> 4 var num1=window.prompt('请输入第一个num'); 5 var num2=window.prompt('请输入第二个num'); 6 var operator=window.prompt('请输入

javascript学习-闭包

javascript学习-闭包 1.什么是闭包 大多数书本中对闭包的定义是:“闭包是指有权访问另一个函数作用域中的变量的函数.”.这个概念过于抽象了,对初学者而言没啥帮助.好在<Javascript忍者秘籍>5.1中给了一个例子来进一步的解释了什么是闭包: var outerValue= 'ninja'; var later; function outerFunction() { var innerValue = "samurai"; function innerFunct

JavaScript学习总结(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

JavaScript学习总结(一)--延迟对象.跨域.模板引擎.弹出层.AJAX示例 目录 一.AJAX示例 1.1.优点 1.2.缺点 1.3.jQuery AJAX示例 二.延迟对象(Deferred) 2.1.回调函数 2.2.deferred.done 三.跨域 3.1.什么是跨域 3.2.JSONP跨域 3.3.jQuery使用JSONP跨域 3.4.跨域资源共享(CORS) 3.5.小结 四.弹出层 五.模板引擎 5.1.Hello World 5.2.方法 5.3.与AJAX结合应