五 Function类型

  每个函数都时Function类型的实例。函数也是对象。

  声明函数:

    function func_name () {}       //javascript解析器会在程序执行时率先读取函数声明,使其在执行任何代码之前可用(可访问)  
    var func_name = function(){};  //解析器执行到它所在的代码行,才会被解释执行。

  因此函数名是个变量,保存的是指向函数对象的指针,不会与某个函数绑定,与包含对象指针的其他变量没什么区别。

  1.没有重载

    声明两个同名的函数,第二个会覆盖掉第一个

  2.作为值的函数

    函数名本身就是变量。因此函数体可以当作值来使用。可以当参数进行传递,也可以当其他函数的返回值。

function callSomeFunction (someFunction, someArgument){
return someFunction(someArgument);
}

3.函数内部属性

    函数内部有两个特殊的对象:arguments 和 this

    *arguments对象保存的是所有传入函数内部的参数。

    *arguments.callee。这是一个指针,指向拥有该arguments对象的函数

function factorial(num) {
if(num <=1){
return 1;
}else{
return num*arguments.callee(num-1);//递归调用
//相当于:
//return num*factorial(num - 1);
//这样消除了函数名与内部递归调用函数名的紧密耦合性
}
}

*this 引用的是函数据以执行的环境的变量对象。

*caller 对象属性。此属性保存的是调用当前对象的函数的引用。如果在全局作用域中调用当前函数,值为null

function outer()
{
inner();
} function inner()
{
alert(arguments.callee.caller);
} outer();//返回outer()函数的源代码

4.函数属性和方法

    length ---  FunctionObject.length 函数参数的个数。函数没有参数,则返回0

    apply() --- Function.apply(scope[ ,Function.arguments||Array])//传递的参数可以为Arguments对象,也可以为参数数组

    call() ---   Function.call(scope[, argument1,argument2,.......])//所要传递的参数必须一一列举吹来

    这两个函数都是扩展它自身运行时所在的作用域。参数1,这两个函数运行时所在的作用域(一般都为对象);参数2, 传递给这个函数的参数。

window.color = 'red';
var o = {'color':'blue'}; function sayColor(){
alert(color);
} sayColor(); // red sayColor.call(this) //red
sayColor.call(window) //red
sayColor.call(o) //blue

    使用这两个函数的好处是:降低对象与方法之间的耦合性。

javascript学习笔记 - 引用类型 Function的更多相关文章

  1. javascript学习笔记 - 引用类型 Object

    引用类型是一种数据结构,也称作对象定义,类似于类的概念. 对象是引用类型的实例. javascript引用类型有:Object, Array, Date, RegExp, Function 使用new ...

  2. javascript学习笔记 - 引用类型 基本包装类型

    六 基本包装类型 Boolean,Number,String 这三个引用类型亦称为基本包装类型,与基本的数据类型boolean,number,string相关联.为了方便操作这些基本类型的数据. 引用 ...

  3. javascript学习笔记 - 引用类型 单体内置对象

    七 单体内置对象 1.Global对象 不属于任何对象的属性和方法,都归于它.全局作用域中定义的变量.函数,都属于Global对象 1.1 URI编码  encodeURI <=>deco ...

  4. javascript学习笔记 - 引用类型 Array

    二 Array 1.可以通过length属性删除或创建新的数组项 arr = [1,2,3]; arr.length = 4;//增加 [1,2,3,undefined] arr.length = 2 ...

  5. javascript学习笔记 - 引用类型 RegExp

    四 RegExp 格式: var expression = / pattern / flags; 1.flags 为标志.分别为g.i.m. g:表示全局模式.即模式将匹配所有的字符串,而不是在发现第 ...

  6. javascript学习笔记 - 引用类型 Date

    三 Date new Date() 在不传递参数的情况下,新创建的对象自动获得当前日期和时间.参数接收毫秒的timestamp Date.parse() 接收表示日期的字符串,返回相应的日期毫秒数ti ...

  7. Java程序猿的JavaScript学习笔记(8——jQuery选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  8. Java程序猿JavaScript学习笔记(2——复制和继承财产)

    计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...

  9. Java程序猿的JavaScript学习笔记(3——this/call/apply)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

随机推荐

  1. 64位Windows系统下32位应用程序连接MySql

    1.首先得安装“Connector/ODBC”,就是Mysql的ODBC驱动,这个是与应用程序相关的,而不是与操作系统相关的,也就是说,不管你的系统是x64还是x86,只要你的应用程序是x86的那么, ...

  2. Web端 页面跳转 页面传值

    要把  Default.aspx 页面    TextBox1中的值    传值到   Default.aspx   Label上去 C#服务端跳转页面 Response    响应请求对象 Redi ...

  3. MovieReview—Wile Hunter(荒野猎人)

     Faith is Power         Faith is power, this sentence is not wrong. Find your own beliefs, and strug ...

  4. UVALive 3983 Robotruck (单调队列,dp)

    如果状态定义为序号和重量的话,决策就是下一个垃圾捡或者不减,但是状态数太多了. 如果只定义序号作为状态的话,决策就变成从前面的某个j一直捡到i才送回垃圾. 这就变成了一个区间选最小值的问题,用单调队列 ...

  5. UVA 1599, POJ 3092 Ideal Path 理想路径 (逆向BFS跑层次图)

    大体思路是从终点反向做一次BFS得到一个层次图,然后从起点开始依次向更小的层跑,跑的时候选则字典序最小的,由于可能有多个满足条件的点,所以要把这层满足条件的点保存起来,在跑下一层.跑完一层就会得到这层 ...

  6. 报bug

    在打印输出seg的gt数据的时候,出现了gt数据突然很大突然很小的情况,一般这种都是访问了其他内存

  7. Spring3中好用的工具类收集

    1) 请求工具类 org.springframework.web.bind.ServletRequestUtils //取请求参数的整数值: public static Integer getIntP ...

  8. 关于flyme5显示不到和卸载不到旧应用解决方法

    笔者买入一台mx5,升级flyme5后旧应用没有显示出来,而且在设置的应用管理都没显示旧应用. 通过adb命令: adb shell pm list packages显示所有包名, 查看自己要删除应用 ...

  9. 【计数】hdu5921Binary Indexed Tree

    二进制拆位计算贡献 题目描述 树状数组是一种常用的数据结构,下面是树状数组用于给区间 [1,x] 内的数加 t 的代码: void add(int x,int t){ for (int i=x;i;i ...

  10. 【单调队列】P1886 滑动窗口

    GET 单调队列 题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: Th ...