JavaScript学习-Function类型
2017-03-26 15:22
218 查看
1,介绍
函数实际上是对象,每个函数都是Function类型的实例。和其他引用类型一样具有属性和方法。
函数名实际上是一个指向对象的指针,不会与某个函数绑定。
函数可作为参数,返回值来使用。
2,定义
使用函数声明语法定义function sum(num1,num2){ return num1 + num2; }
使用函数表达式定义
var sum = function(num1,num2){ return num1 + num2; }
使用Function构造函数(不推荐,这种语法会导致解析两次代码)
接收任意数量的参数,但最后一个参数始终都被看成是函数体,前面的参数枚举出了新函数的参数,例:
var sum = new Function("num1","num2","return num1 + num2");
3,函数声明与函数表达式
解析器对函数声明和函数表达式并非一视同仁。解析器会率先读取函数声明(函数声明提升),并使其在执行任何代码之前可用(放到源代码树的顶部)。
函数表达式,必须等到解析器执行到它所在的代码行,才会被解释执行。
除了什么时候可以通过变量访问函数这一点区别之外,函数声明与函数表达式的语法等价。
4,没有重载的深入理解
函数名实际上是一个指针或变量,所以相似的,定义两个相同名字的函数,后者会覆盖前者。5,函数内部属性
arguments用来保存函数参数,这个对象还有一个名叫callee的属性,ECMAScript 5 还定义了caller属性
callee
该属性是一个指针,指向拥有这个arguments对象的函数。
caller
在严格模式下访问它对导致错误,在非严格模式下,这个属性始终是undefined。
this
引用的是函数据以执行的环境对象,行为和Java和C#中的this大致类似。
caller
这个属性中保存着调用当前函数的函数的引用,ECMAScript 5规范化了一个函数对象的caller属性。如果是在全局作用域中调用当前函数,它的值为null。
6,函数属性和方法
属性每个函数都包含两个属性length和prototype
length
表示函数希望接收的命名参数的个数
prototype
prototype是保存引用类型所有实例共享的方法和属性,诸如toString()和valueOf()等方法实际上都保存在prototype名下。
该属性是不可枚举的,无法使用for-in来发现。
如果函数为构造函数,可以理解通过该构造函数创建的那个对象实例的原型对象,原型对象可以让所有对象实例共享它所包含的属性和方法。
默认情况下prototype会获取一个constructor属性,这个属性包含一个指向prototype属性所在的函数的指针。
方法
每个函数都包含两个非继承而来的方法,apply()和call()。这两个方法的用途是为了设置函数体内的this对象的值。
apply()
接收两个参数(1)this所引用的对象,(2)参数数组。其中第二个参数可以使Array的实例,也可以使arguments对象。
call()
与apply()方法作用相同,区别在于接收参数的方式不同,第一个参数是this值没有变化,变化的是其余参数都是直接传递给函数。
apply()和call()的好处
扩充函数来一运行的所用域。
对象不需要与方法有任何的耦合关系。
bind()
这是ECMAScript 5定义的一个方法,其this值会被绑定到传给bind()函数的值。
继承的方法
toLocaleString()和toString(),valueOf()返回函数的代码,主要用在调试代码。
相关文章推荐
- JavaScript学习笔记——引用类型:Object类型、function类型
- javascript学习之 function类型 (27)——function类型 内部属性
- javascript学习笔记 - 引用类型 Function
- JavaScript之---function类型--学习笔记
- javascript学习笔记:function类型
- 【JavaScript】【学习】3、JavaScript中的function类型
- JavaScript中的引用类型Function类型学习心得
- JavaScript学习-Function类型
- javascript学习之Function 类型
- 一步步学习javascript基础篇(3):Object、Function等引用类型
- 自我学习而已——javascript——Function类型和基本包装类型
- JavaScript学习点滴—js对象的四种类型的属性、方法的访问
- javascript中的数据类型、Object与Function
- Javascript学习笔记一 之 数据类型
- Javascript学习笔记一 之 数据类型
- Javascript学习1 - Javascript中的类型对象
- javascript 学习笔记(六)浏览器类型及版本信息检测代码
- Javascript学习笔记之函数重载和类型检查
- Javascript学习笔记1 数据类型
- Javascript学习笔记: Function::apply 方法