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. 使用DbTableColumnWeb项目简要

    项目说明 环境:Vs2013 .Net4.5 MVC5 主要功能:直观编辑表字段说明:生成表对应的实体类:生成数据库表文档说明: 初衷:在开发过程中,经常会遇到同事询问表字段含义.手动编写表对应的实体 ...

  2. .Net 百度经纬度转高德

    1.需求 由于我们项目里面的经纬坐标是百度的,而对接的第三方需要的是高德的经纬坐标,两者之间是有位差区别的,不能直接使用,我们需要通过一个算法将百度经纬度转化为高德经纬度,在百度官网上,有java算法 ...

  3. 201621123012 《java程序设计》第5周学习总结

    作业05-继承.多态.抽象类与接口 标签(空格分隔): java 1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 答:接口,比较器,has-a,Comparator. 1.2 ...

  4. Android的四大组件学习

    一.Linearlayout  :  线性布局 1. android:orientation="vertical"     //控件的方向控制,vertical : 垂直布局 ,  ...

  5. (3)视觉里程计 Visual Odometry

    首先分析include头文件下的slamBase.h文件 # pragma once // 各种头文件 // C++标准库 #include <fstream> #include < ...

  6. tomcat 项目发布方式

    1.WEB应用的组成结构 开发web应用时,不同类型的文件有严格的存放规则,否则不仅会使web应用无法访问 还会导致web服务器自动报错. mail:web应用所在目录(该目录自定义) html,js ...

  7. android平台一些常用代码

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  8. 使用 spring.profiles.active 及 @profile 注解 动态化配置内部及外部配置

    引言:使用 spring.profiles.active 参数,搭配@Profile注解,可以实现不同环境下(开发.测试.生产)配置参数的切换 一.根据springboot的配置文件命名约定,结合ac ...

  9. 快速滑动时 `cellForRow` 的调用次数

    问题 有一个 1000 个 cell 的 tableView,刚刚进入界面时,contentOffset 为 0.用手快速滑动 tableView,直至最下面一个 cell 显示在屏幕上. 这个过程中 ...

  10. python3模块: uuid

    一. 简介 UUID是128位的全局唯一标识符,通常由32字节的字母串表示.它可以保证时间和空间的唯一性,也称为GUID. 全称为:UUID--Universally Unique IDentifie ...