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. C#克隆

    克隆方法是原型设计模式中必须使用的方式,它将返回一个与当前对象数据一致的对象.正如其名,犹如一个模子雕刻而出.克隆类型分为两种:浅克隆.深克隆. 1.浅克隆 浅克隆方式是最简单.最直接的方式.只需要类 ...

  2. CC2530学习路线-基础实验-GPIO 控制LED灯亮灭(1)

    目录 1.前期预备知识 1.1 新大陆ZigBee模块LED灯电路 1.2 CC2530相关寄存器 1.3 寄存器操作技巧 1.4 CPU空转延时 1.4 操作流程图 2.程序代码 The End 1 ...

  3. FFMpeg的一些基础配置

    一 . CMakeLists.txt文件的使用 1.添加头文件的相对路径 : include_directories(include(这里面就是文件的名字)) 2.设置ffmpeg的库的路径(v7a或 ...

  4. UUID,加密解密算法的使用

    注意的地方: Base64Encoder,Base64Decoder并不属于JDK标准库范畴,但是又包含在了JDK中 解决方法:按照如下方法设置Eclipse导入%JAVA_HOME%\jre\lib ...

  5. vue 学前班002(创建一个实例)

    创建一个Vue实例 我们之前说过,Vue是数据驱动视图的,只要model(模型层)的数据改变了,Vue就会帮我们改变视图上显示的内容,不用我们自己去动手写代码更新.那么,它是怎么做到的,我们的代码要怎 ...

  6. 解决onclick事件的300ms延时问题

    首先是资源的下载:fastclick.js 作为一个新手,插件原理什么的研究不透,看的也是似懂非懂的,网上有很多大牛写的博文相当的好,对于写文章方面确实是望尘莫及啊,所以想详细了解原理的朋友直接去大牛 ...

  7. n层满k叉树总共有多少个节点

    2叉树 1 3 7 对应公式为(2^n-1)/1 3叉树 1 4 13 对应公式为(3^n-1)/2 4叉树 1 5 21对应公式为(4^n-1)/3 ... n层k叉树,总共有(k^n-1)/k-1 ...

  8. 【13】JMicro微服务-ID生成与Redis

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 往下看前,建议完成前面1到12小节 1. 微服务中ID地位 如果说前面小节的功能点是微服务的大脑,那么全局唯一ID则是微服务 ...

  9. POJ 2260

    #include <iostream> #define MAXN 100 using namespace std; int _m[MAXN][MAXN]; int main() { //f ...

  10. POJ 1067

    #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> usin ...