Function(函数)类型实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法,由于函数是对象,因此函数名实际上也是一个指向函数对象的指针

  声明方式

    function box(number1,number2){                        //1.普通函数声明的方式
return number1*number2;
} var box=function(num1,num2){ //2.使用变量初始化函数
return num1+num2;
} var box=new Function("num1","num2","return num1+num2") //3.使用new的构造函数来声明函数(不推荐使用 会解析2次代码)

  作为值的函数

    函数名本身就是变量,所以函数也可以作为值来使用,也就是说,不仅可以像传递参数一样把一个函数

传递给另一个函数,而且可以将一个函数作为另一个函数的结果返回

function box(sum,name){
return sum+name;
} function sum(id){
return id+;
}
var a=box(sum(),); //sum(10)这里传递的是函数的返回值,和普通的变量一样没区别
alert(a);
function box(sum,name){
return sum(name);
} function sum(id){
return id+;
}
var a=box(sum,); //sum在这里是一个函数,当作参数传递到另一个函数中,而不是函数的返回值
alert(a);

函数的外部属性

  在函数内部,有两个特殊的对象,arguments和this。arguments是一个类数组对象,包含传入函数中的所有参数,主要用途是保存函数参数,但这个对象还有一个名字叫callee的属性,该属性是一个指针,指向拥有

arguments对象的函数。

    function box(num){
if (num<=1) {
return 1;
}else{
return num*box(num-1) //调用自身理解 第一步调用box(4) 4>1返回4*box(3),3>1返回4*3*box(2),2>1 返回4*3*2*box(1),1=1 返回1 最后结果4*3*2*1=24
}
} alert(box(4));

利用arguments.callee属性来代替

function box(num){
if (num<=1) {
return 1;
}else{
return num*arguments.callee(num-1) //arguments.calle是一个指针可以指向拥有这个arguments函数(也就是自身的意思)
}
}

this:

  其行为与java、C#中的this大致相似,换句话说this引用的是函数据以执行操作的对象,或者说函数调用语句所处的那个作用域,

ps:当在全局作用域中调用函数时,this对象引用的就是window。

  

//window是一个对象,是js里面最大的对象,是最外围的
alert(window); //返回object window
alert(this); //返回object window 所以window=this var color="红色的"; //这里的color 就是全局变量,而这个变量又是window的属性
alert(window.color); //返回红色的 这里已经很好的说明color是window下面的属性
    window.color="红色的";    //相当与 var color="红色的";
alert(this.color); //返回红色的 因为这里的this对象就是window
this.color="蓝色的";
alert(color); //这里的color是window下的属性,也就是全局变量
var box={ //创建box对象 属性color 方法sayColor
color:"红色的", //这里的color是box属性下的color,也就是局部变量
sayColor:function(){
alert(this.color); //这里的this代表的是box对象
}
} box.sayColor(); //掉用box下的sayColor 不要直接写SayColor
    window.color="蓝色的";
function sayColor(){
alert(this.color);
} sayColor(); //返回蓝色的,这里的this 没有对象把它包含,它还是winsow的
    window.color="红色的";
function sayColor(){
alert(this.color);
} //sayColor(); //返回蓝色的,这里的this 没有对象把它包含,它还是winsow的 var box={
color:'蓝色的'
}
box.sayColor=sayColor; //这段代码相当于 在box里面加了sayColor:function (){alert(this.color)}
box.sayColor();

函数的内部属性

length:来获取函数的参数的个数

function box(name,age){
return name*age
} alert(box.length); //返回函数的参数个数

prototype属性  

  它是保存所有实例方法的真正所在,也就是原型,这个属性我们将在面向对象第一章详细介绍。而prototype下有两个方法,apply()和call(),每个函数都包含这两个非继承而来的方法。这两个方法的用途都在特定的作用域中调用函数

实际上等于设置函数体内this对象的值

  语法:

    对象.apply(对象,[参数1,参数2.....]);

function box(name,age){
return name+age
} //利用apply()方法来冒充执行box
function sum(name,age){
return box.apply(this,[name,age]) //this表示windows下的作用域,[]表示传递的参数
} alert(sum(1,6)); //调用sum方法返回结果和box一样 冒充成功
    function box(name,age){
return name+age
} //利用apply()方法来冒充执行box
function sum(name,age){
return box.apply(this,[name,age]) //this表示windows下的作用域,[]表示传递的参数 apply()和call可以冒充另外一个函数
} //alert(sum(1,6)); //调用sum方法返回结果和box一样 冒充成功
function sum2(name,age){
return box.apply(this,arguments); //如果参数过多我们可以使用argument类数组来代替参数
}
alert(sum2(10,20));

call()方法和apply相同,他们的区别仅仅在于接收参数的方式不同,对于call()方法而言,第一个参数是作用域 没有变化,变化只是其余的参数都是直接传递给函数的

    function box(name,age){
return name+age
} //利用apply()方法来冒充执行box
function sum(name,age){
return box.call(this,name,age) //this表示windows下的作用域,[]表示传递的参数 apply()和call可以冒充另外一个函数
} alert(sum(10,20));

  

  

javascript Function类型的更多相关文章

  1. javascript——function类型(this关键字)

    如果不用分组的话,当用exec检测rar的时候会错误 结果: Function: 返回值为三(不推荐)

  2. JavaScript笔记——引用类型之Object类型和Function类型

    <JavaScript高级程序设计>中介绍的几种JavaScript的引用类型,本文只记了Object跟Function类型 Object类型 创建对象 var person = new ...

  3. 浅析JavaScript之Function类型

    JavaScript中的函数实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上只是指向函数对象的指针,保存函数在堆内存中的地 ...

  4. JavaScript之Function类型

    1. 创建方式 //1.函数声明 function sum(num1,num2){ return num1+num2; } //2.函数表达式 var sum = function(num1,num2 ...

  5. 《JavaScript高级程序设计》读书笔记 ---Function 类型

    说起来ECMAScript 中什么最有意思,我想那莫过于函数了——而有意思的根源,则在于函数实际上是对象.每个函数都是Function 类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对 ...

  6. JavaScript高级 Function类型

    ·    Function类型 (属于引用类型) 1.JS中,有的函数均是对象,这个一个非常有特点的地方.它既然是对象,那么它的构造函数是谁呢?就是Function.(例如:function Pers ...

  7. JavaScript中的Function类型浅析

    1. Function类型是js中引用类型之一,每个函数实际上都是Function类型的实例对象,具有自己的属性和方法.正因为函数式对象,所以函数名实际上也是一个指向函数对象的指针. 2. 常用的函数 ...

  8. JavaScript(第十天)【Function类型】

    在ECMAScript中,Function(函数)类型实际上是对象.每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象 ...

  9. Javascript高级编程学习笔记(16)—— 引用类型(5) Function类型

    JS中许多有趣的地方都和函数脱不了联系 那么是什么让JS中的函数这么有趣呢? 我们一起来看看吧 Function类型 在JS中函数实际上就是对象,每个函数都是Function类型的实例,和JS的其他引 ...

随机推荐

  1. dorado7-发布

    1.首先将configure.properties中Debug删除 2.eclipse自带的打包方式进行打包 2.1 next==>选择打包文件存放的路径==>finish==>xx ...

  2. max渲染通道元素的范例

    renderElementManager = MaxOps.GetCurRenderElementMgr() renderElementManager.Removeallrenderelements( ...

  3. 『原创』手把手教你搭建一个实用的油耗App(一)

    前言: 入行快10年,有点积蓄,三年前买了代步车.于是乎,汽车油耗开销就成了每个月都必须关注的问题.三年来,用过了无数油耗记录软件,比如最知名的“小熊油耗”,从第一次用,一直到最新一版,感觉越来越“臃 ...

  4. FFMpeg音频重采样和视频格式转

    一.视频像素和尺寸转换函数 1.sws_getContext : 像素格式上下文  --------------->多副图像(多路视频)进行转换同时显示 2.struct SwsContext  ...

  5. python stdout 重定向

    import sys class Buffer(object): def __init__(self): self.buffer = [] def write(self, *args, **kwarg ...

  6. 双11,自动领取优惠券 js 代码

    http://www.zhihu.com/question/36426051/answer/67690322 本来我不熟悉 js,正好研究一下 (function(window, document) ...

  7. 干货 | 自适应大邻域搜索(Adaptive Large Neighborhood Search)入门到精通超详细解析-概念篇

    01 首先来区分几个概念 关于neighborhood serach,这里有好多种衍生和变种出来的胡里花俏的算法.大家在上网搜索的过程中可能看到什么Large Neighborhood Serach, ...

  8. 数据结构---平衡查找树之B树和B+树(转)

    本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html 前面讲解了平衡查找树中的2-3树以及其实现红 ...

  9. Linux下安装jdk8步骤详述(转载)

    Linux下安装jdk8步骤详述 原文地址:http://www.cnblogs.com/shihaiming/p/5809553.html 作为Java开发人员,在Linux下安装一些开发工具是必备 ...

  10. puppet的使用:安装puppet

    最近项目要使用puppet,趁机赶紧学习下. 在家里的机器中搭建puppet环境,使用两台ubuntu 14.04: 准备工作 时间同步 两台设备先进行时间同步,我把要安装master的机器作为NTP ...