《JavaScript语言精粹》笔记(3)--函数

来源:互联网 发布:java自动包装功能 编辑:程序博客网 时间:2024/05/16 08:44

1.函数对象
每个函数在创建时附有两个附加的隐藏属性:函数的上下文和实现函数行为的代码
2.函数字面量
函数对象可以通过函数字面量来创建:
var add = function (a,b){
return a + b;
} ;
3.调用—调用笔记
4.参数
函数被调用时,会接收两个附加的参数:this和arguments。this在调用部分已经说过。现在说一下arguments数组。
通过这个数组,函数可以访问所有它被调用时传递给它的参数列表,包括那些没有被分配给函数声明时定义的形式参数的多余参数。
注意:arguments数组拥有一个length属性,但它缺少所有的数组方法。
5.返回
return语句可用来使函数提前返回。当return被执行时,函数立即返回而不再执行余下的语句。
一个函数总是会返回一个值。若没有返回值,则返回undefined。
6.给类型增加方法
JavaScript允许给语言的基本类型增加方法。通过给Object.prototype添加方法来使得该方法对所有对象可用。这样的方式对函数、数组、字符串、数字、正则表达式和布尔值都适用。

   Function.prototype.addMethod=function(methodName,func){        if(!this[methodName]){             this[methodName]=func;        }        return this;    };    String.addMethod('trim',function(){//这是添加的新方法        return this.replace(/^\s+|\s+$/g,'');    });    alert('"'+"  neat  " .trim()+'"');

7.递归
递归函数会直接或间接地调用自身的一种函数。一般来说,递归函数会调用自身去解决它的子问题。
8.作用域
JavaScript的函数是基于词法作用域—词法作用域笔记的顶级对象。
9.闭包
请看闭包–整理一章
10.回调
作用:js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数。
定义:回调函数是一个作为变量传递给另外一个函数的函数,它在主体函数执行完之后执行。(因为函数实际上是一种对象,它可以存储在变量中,通过参数传递给另一个函数,在函数内部创建,从函数中返回结果值”)
例子

    <script type="text/javascript">    //同步请求    request = prepare_the_request();    response = send_request_synchronously(request);    display(response);    //异步请求--回调函数    request = prepare_the_request();    send_request_asynchronously(request,function(){        display(response);    });  </script>

11.模块
可以使用函数和闭包来构造模块。模块是一个提供接口却隐藏状态与实现的函数或对象。
通过使用模块,可以摒弃全局变量的使用。
模块的一般形式:一个定义了私有变量和函数的函数;利用闭包创建可以访问私有变量和函数的特权函数;最后返回这个特权函数,或者把它们保存到一个可访问到的地方。
模块函数也可以用来产生安全的对象。
12.级联、套用、记忆

原创粉丝点击