javascript Function类型
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类型的更多相关文章
- javascript——function类型(this关键字)
如果不用分组的话,当用exec检测rar的时候会错误 结果: Function: 返回值为三(不推荐)
- JavaScript笔记——引用类型之Object类型和Function类型
<JavaScript高级程序设计>中介绍的几种JavaScript的引用类型,本文只记了Object跟Function类型 Object类型 创建对象 var person = new ...
- 浅析JavaScript之Function类型
JavaScript中的函数实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上只是指向函数对象的指针,保存函数在堆内存中的地 ...
- JavaScript之Function类型
1. 创建方式 //1.函数声明 function sum(num1,num2){ return num1+num2; } //2.函数表达式 var sum = function(num1,num2 ...
- 《JavaScript高级程序设计》读书笔记 ---Function 类型
说起来ECMAScript 中什么最有意思,我想那莫过于函数了——而有意思的根源,则在于函数实际上是对象.每个函数都是Function 类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对 ...
- JavaScript高级 Function类型
· Function类型 (属于引用类型) 1.JS中,有的函数均是对象,这个一个非常有特点的地方.它既然是对象,那么它的构造函数是谁呢?就是Function.(例如:function Pers ...
- JavaScript中的Function类型浅析
1. Function类型是js中引用类型之一,每个函数实际上都是Function类型的实例对象,具有自己的属性和方法.正因为函数式对象,所以函数名实际上也是一个指向函数对象的指针. 2. 常用的函数 ...
- JavaScript(第十天)【Function类型】
在ECMAScript中,Function(函数)类型实际上是对象.每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象 ...
- Javascript高级编程学习笔记(16)—— 引用类型(5) Function类型
JS中许多有趣的地方都和函数脱不了联系 那么是什么让JS中的函数这么有趣呢? 我们一起来看看吧 Function类型 在JS中函数实际上就是对象,每个函数都是Function类型的实例,和JS的其他引 ...
随机推荐
- dorado7-发布
1.首先将configure.properties中Debug删除 2.eclipse自带的打包方式进行打包 2.1 next==>选择打包文件存放的路径==>finish==>xx ...
- max渲染通道元素的范例
renderElementManager = MaxOps.GetCurRenderElementMgr() renderElementManager.Removeallrenderelements( ...
- 『原创』手把手教你搭建一个实用的油耗App(一)
前言: 入行快10年,有点积蓄,三年前买了代步车.于是乎,汽车油耗开销就成了每个月都必须关注的问题.三年来,用过了无数油耗记录软件,比如最知名的“小熊油耗”,从第一次用,一直到最新一版,感觉越来越“臃 ...
- FFMpeg音频重采样和视频格式转
一.视频像素和尺寸转换函数 1.sws_getContext : 像素格式上下文 --------------->多副图像(多路视频)进行转换同时显示 2.struct SwsContext ...
- python stdout 重定向
import sys class Buffer(object): def __init__(self): self.buffer = [] def write(self, *args, **kwarg ...
- 双11,自动领取优惠券 js 代码
http://www.zhihu.com/question/36426051/answer/67690322 本来我不熟悉 js,正好研究一下 (function(window, document) ...
- 干货 | 自适应大邻域搜索(Adaptive Large Neighborhood Search)入门到精通超详细解析-概念篇
01 首先来区分几个概念 关于neighborhood serach,这里有好多种衍生和变种出来的胡里花俏的算法.大家在上网搜索的过程中可能看到什么Large Neighborhood Serach, ...
- 数据结构---平衡查找树之B树和B+树(转)
本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html 前面讲解了平衡查找树中的2-3树以及其实现红 ...
- Linux下安装jdk8步骤详述(转载)
Linux下安装jdk8步骤详述 原文地址:http://www.cnblogs.com/shihaiming/p/5809553.html 作为Java开发人员,在Linux下安装一些开发工具是必备 ...
- puppet的使用:安装puppet
最近项目要使用puppet,趁机赶紧学习下. 在家里的机器中搭建puppet环境,使用两台ubuntu 14.04: 准备工作 时间同步 两台设备先进行时间同步,我把要安装master的机器作为NTP ...