JS高级程序设计——Function类型
来源:互联网 发布:修改路由器lan口mac 编辑:程序博客网 时间:2024/05/24 15:41
Function 类型
函数实际上是对象,具有属性和方法。函数名是一个指向函数对象的指针。
一、函数的定义:
1. 函数声明语法:
function sum(num1,num2)
{
return num1+num2;
}
2. 函数表达式:
var sum=function(num1,num2)
{
return num1+num2;
};
在执行环境中加载数据时,解析器会率先读取函数声明,并使其在执行任何代码前可用,而函数表达式则需要按照顺序读取到。
函数没有重载,因为相同名字的函数,后者会覆盖前者。
函数可以作为值来传递、返回。
二、 函数内部属性
1. arguments 保存函数参数。有一个callee属性,该属性是一个指针,指向拥有这个arguements对象的函数。
function factorial(num)
{
if(num<=1)
return 1;
else
return num*arguments.callee(num-1);
}
2. this 函数据以执行的环境对象。在全局中调用函数时,this=window
window.color="red";
function saycolor()
{
alert(this.color);
}
saycolor();//"red"
以上为两个函数内部的对象
函数对象的属性:caller 该属性保存着调用当前函数的函数的引用。如果是在全局作用域中调用当前函数,它的值为null。
function outer()
{
inner();
}
function inner()
{
alert(inner.caller);
//等同于 alert(arguments.callee.caller);但是不推荐
}
outer();//显示outer函数的源代码
三、函数属性
- length 表示函数希望接受的命名参数的个数。
- prototype 保存所有实例方法。
四、函数方法
(前两个:非继承,都是在特定的作用域中调用函数)
apply (运行函数的作用域,参数数组/arguments对象)
function sum(num1,num2){ return num1+num2;}function callsum1(num1,num2){ return sum.apply(this,arguments);}function callsum2(num1,num2){ return sum.apply(this,[num1,num2]);}alert(callsum1(10,10);//20alert(callsum2(10,10);//20
call 方法与apply相似,不同的是,需要将传入的参数都罗列出来
return sum.call(this,num1,num2);
bind 会创建一个函数的实例,其this值会被绑定到传给bind()函数的值。
var o={color:"blue"};function saycolor(){ alert(this.color);}var objectSaycolor=saycolor.bind(o);objectSaycolor();//blue
- JS高级程序设计——Function类型
- 《javascript高级程序设计》——引用类型之Function
- Javascript高级程序设计——10.函数Function类型
- 高级js教程3——Function类型
- 《javascript高级程序设计》读书笔记——引用类型之function类型(细节整理)
- JavaScript高级程序设计学习笔记——引用类型2Function类型(重要)
- JS高级程序设计——基本包装类型
- JavaScript高级程序设计——第五章引用类型之Function;
- 《JavaScript高级程序设计》--Function类型笔记
- 《JavaScript高级程序设计》——JS中Object与Array类型常用方法。
- JS高级程序设计5-引用类型
- JS高级程序设计(三):引用类型
- JS高级程序设计——BOM
- JS:关于JS引用类型——Function类型
- 高级JS内容——JavaScript高级程序设计笔记
- JavaScript高级程序设计学习笔记——引用类型1
- 《Javascript高级程序设计》读书笔记之——基本包装类型
- 《javascript高级程序设计》——引用类型之Object、Array
- Android DataBinding(数据绑定)详解(一)
- 5-spring源码3.2.18解读+spring技术内幕(关于BeanDefinition的定位)
- Linux版本的 sticky note
- Caffe中卷积的实现
- 51Nod 1094 和为k的连续区间
- JS高级程序设计——Function类型
- 月半小夜曲---陈乐基
- Hibernate_查询_HQL详解(二)_聚集函数、分组、连接查询、查询时使用参数的HQL语法
- HTTPoxy
- 前端跨域的问题
- JVM创建对象
- Android应用程序管理系列(四)—— packagemanager flags 与 packageInfo
- 在C语言中,double、long、unsigned、int、char类型数据所占字节数
- Flume+Kafka 将不同类别日志发往不同分区的三种方式的比较