• javascript 之 函数


    注意:函数名仅仅是一个包含指针的变量而已

    函数内部属性

         arguments 和this 两个特殊对象

          arguments:类数组对象,包含出入函数中的所有参数,主要用途是保存函数参数

                              callee:该属性是一个指针,指向拥有这个arguments对象的函数,在严格模式下运行,会导致错误

         例:function factorial(num){

          if(num<=1)

             return 1;

                         else 

             return num*(factorial(num-1))       

                }

           此处用了递归算法,若函数名不变则没有问题,但是函数名变化,那么内部的名字也要变,存在耦合关系,为了消除这种耦合,可以使用callee           

        function factorial(num){

          if(num<=1)

             return 1;

                         else 

             return num*arguments.callee(num-1)      

                   }

    函数的属性和方法:

          每个函数都包含该两个属性

                length:表示函数希望接收的命名参数的个数

                prototype:toString()和valueOf()等方法实际都保存在prototype名下,在创建自定义类型以及实现继承时,该属性都是极为重要的

           每个函数都包含两个非继承而来的方法

                apply:接收两个参数:一个是运行函数的作用域,另个参数是参数数组 或者 arguments对象

                call():基本和apply相同,但是除了this外,传递给函数的参数必须逐个列举出来

                例:function sum(num1,num2){ return num1+num2}

                       function applySum1(num1,num2){ return sum.apply(this , arguments)} 或者arguments替换为[num1,num2]

                例:function callSum(this,num1,num2){ return sum.call(this,num1,num2)};

            call()和apply()强大的地方是扩充函数赖以运行的作用域

                 例如 :

                  window.color=red;     var o={ color :blue}

                  function sayColor(){ alert (this.color)} 

                   sayColor.call(this);//red

                   sayColor.call(window);//red

                   sayColor.call(o);//blue

            bind()方法:兼容性 ie9+,firefox4,safari5.1.....

                   var objectSayColor=sayColor.bind(o); objectSayColor();//blue

    基本包装类型:Boolean,Number,String

              String: 字符串是基本类型值,不应该存在方法,但为了这种直观的操作,后台已经做了处理

                    例:var s1=' some text '

                           var s2= s1.substring(2);

                     可以理解为:(1)创建String类型的实例  (2)在实例上调用指定的方法 (3)销毁这个实例

                      例:var s1=new String(' some text')   var s2=s1.substring(2)    s1=null;

              Boolean:该实例重写了valueOf()方法,返回基本类型值true或false,重写了toString()方法,返回字符串‘true’ 或‘false’,在实际中不怎么用到

                     var falseObject=new Boolean(false);

                     var result = falseObject && true;  //返回true

                     注意:所有对象都会被转为true

              Number:也重写了valueOf(),toLocaleString()和toString()方法

                          toFixed()://一般带有0-20个小数位

                        例:var  num= 10   num.toFixed(2);   //10.00        var num=10.005   num.Fixed(2) //10.01 对多处的小数位进行四舍五入   

                  

                      

                   

                

                 

                 

              

  • 相关阅读:
    Spark系列文章(三):搭建Spark开发环境IDEA
    MAC下搭建Hadoop运行环境
    Spark系列文章(二):Spark运行环境构建
    Spark系列文章(一):Spark初识
    Mac配置Maven及IntelliJ IDEA Maven配置
    《VC++深入详解》学习笔记 第十八章 ActiveX控件
    《VC++深入详解》学习笔记 第十七章 进程间通信
    Git 常用指令
    BAT脚本
    让Git的输出更友好: 多种颜色和自定义log格式
  • 原文地址:https://www.cnblogs.com/zmztya/p/10096776.html
Copyright © 2020-2023  润新知