zoukankan      html  css  js  c++  java
  • javascript基础篇--function类型(上)

     


    js中,function类型实际上是对象,每一个函数都是function类型的一个实例。并且与其它引用类型一样具有属性和方法。

     

    声明


    1普通方式


    Function sum(num1,num2)
    {
    Return num1+num2;
    }

    2使用变量初始化函数


    Var sum=function(num1,num2)
    {
    Return num1+num2;
     
    }


    以上两种方式是经常使用的方式。当然还有其它方式,但相比还是以上更优越。

    定义函数。为的就是使用方便。这里仅仅对内部属性进行简单了解

     

    函数内部属性


    不论什么函数内部,都有两个特殊的对象,arguments  this

    arguments为数组对象,包括传递的全部參数。this是它所处对象的作用域。

    arguments

    比如

    一个递归的函数调用
    Functionsum(num){
      If(num<=1){
       Return 1;
    }else{
      Return num*box(num-1);
     }
    }
     

    对于求和全然没有问题,倘若函数名改动了,那么递归中的函数就会报错了。所以为了解决问题,我们能够使用函数自身的 arguments.callee 解决。


    Function sum(num){
    If(num<=1){
          Return 1;
    }else{
    Return num*arguments.callee(num-1);
    }
    }

    This使用

    先前觉得自己理解的非常到位,可是我看到下面源代码的时候还是有偏差的。

     

    window对象是js中最大的对象。也是最外围的

    全部全局的变量都是window的属性。所以就有

     

    Varcolor='红色的'

    Alert(this.color);

    Alert(window.color) 

    两者是同样的结果,这里color为全局变量。所以是window的属性。this代表的就是windows

     

    Window.color='红色的'

    Var box={
       Color:'蓝色的',
       sysColor:function(){
         Alert(this.color);
       }
    }
     
    alert(this.color);//此处的this外层是window对象,所以是windowcolor
    box.sysColor();//box的color

    ======================================================================

    Window.color='红色的'
     
    Function sayColor(){
    Alert(this.color);
    //这里是一个动态的this,注意范围的变化
    }
     sayColor();
     
    Var box={
    Color:'蓝色的'
    }
    Box.sayColor=sayColor;
    Box.sayColor();//蓝色

    以上对this的基本认识,也是最经常使用的范围变换。this代表包围它对象自身。

     

    Call()apply()方法

     

    表面上他们是对其它函数的调用,可是不要被他们的表象所迷惑了,真实作用是改动函数的作用域

     

    Var color='红色的';
    Var box={
    Color:'蓝色的';
    }
     
    Function sayColor(){
    Alert(this.color);
    }
     saycolor();//红色
    sayColor.call(this);//this为window//红色
    sayColorcall(box);////蓝色 ;冒充box,作用域就在box对象中


    Call,apply的參数为

    Apply(对象作用域,參数);

     

    函数的定义,其最后还是为调用,那么调用的类型有哪些呢,

     

    函数调用


    1作为函数的返回值

    与普通变量一样。

     

    function box(sum,num){
    returnsum+num;        
    }
     
    function sum(num){
    returnnum+10;
    }
     
    varresult=box(sum(10),10);
    alert(result);


     

    这里我们能够看到输出的结果是30。这里sun返回的是一个详细的数值。

     

    函数当做參数传递

    对以上函数进行变型

    function box(sum,num){
    return sum(num);        
    }
     
    function sum(num){
    returnnum+10;
    }
     
    var result=box(sum,10);
    alert(result);

    输出为20,还是一个数值。可是这里的參数sum已经不再是一个详细额的数值了,而是一个详细的函数。在box函数中。參数是一个sun函数。

     

    小结:


    该内容为funtion的内部的基本属性和方法的认识,js的函数与其它语言的函数是非常相识的,也是源于object类型,期也有thisarguments等參数组。与main函数非常是相识,对照j2ee中的函数以及其它语言的属性也是类型的。如未说明的lengthproperty属性等。

     

    property原型,请參见下篇function介绍

     

     

     

  • 相关阅读:
    基于Python的数据分析(1):配置安装环境
    Learn flask in the hard way:配置环境的安装
    网络云盘的存储机制
    读书笔记:云计算概念、技术和架构
    小型开发团队中项目管理的方法及原则
    华为专家谈CMDB建设
    2018软件工程第二次作业——个人项目
    福大软工1816 · 第一次作业
    python学习摘要(3)--字符串处理函数
    python学习摘要(4)--列表简单处理
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6891177.html
Copyright © 2011-2022 走看看