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的其他引 ...
随机推荐
- Angular6 学习笔记——组件详解之模板语法
angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...
- Spring Boot - Spring Data
使用JPA 虽然JPA是一个标准,但spring中一般就是使用hibernate实现的 使用JPA(Java Persistence API,Java持久化API,是个规范,其实是借助Hibernat ...
- 先装VS2008之后,又装了2013,然后启动VS2008提示“Tools Version”有问题?
这个网上资料一搜很多,我就是按照下面这个链接去解决的,删除 “14.0” 整个键值文件夹之后重启VS2008就好了, 注意:上面第一张图是我在网上找的08和10版本弹出的错误,我自己弹出的是提示14. ...
- 将tomcat添加到服务中
转载自:http://blog.csdn.net/zjd934784273/article/details/47701011(windows) :http://www.cnblogs.com/ilah ...
- JQuery - Ajax和Tomcat跨域请求问题解决方法!
在JQuery里面使用Ajax和Tomcat服务器之间进行数据交互,遇到了跨域请求问题,无法成功得到想要的数据! 错误信息部分截图: 通过错误信息判断知道已经发生在Ajax跨域请求问题了! 当前Tom ...
- 【转】目标检测之YOLO系列详解
本文逐步介绍YOLO v1~v3的设计历程. YOLOv1基本思想 YOLO将输入图像分成SxS个格子,若某个物体 Ground truth 的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这 ...
- create session 参数介绍
Create Session alias, url, headers={}, cookies=None, auth=None, timeout=None, proxies=None, verify=F ...
- Centos7安装Chacha20加密算法 (验证成功)
Centos7安装Chacha20加密算法 (验证成功) 有些程序会使用Chacha20加密算法,如果Centos7系统报错Exception: libsodium not found,则缺乏M2Cr ...
- thuwc2019总结
275,是我的自己的估分 而350,是面试线 就发挥而言,这次的发挥相当糟糕,第一天选择全场打暴力而不打签到题正解,第二天因A题思路想偏造成2h额外时间花费.第二题与第三题之间,我选择了难打的第三题而 ...
- 【GDOI2015】 推箱子 状态压缩+bfs
请注意$8$是一个美妙的数字 考虑到$8\times 8=64$,而一个unsigned long long是$64$位的,所以考虑用一个$01$状态存储箱子.考虑到箱子能转动,那么四种情况都存一下就 ...