常用子类function
函数:
1.创建
法1:函数字面量
var say=function(){ }
法2:函数声明
function say(){ }
法3:匿名函数
function(){ }
(function(){ })()
- 调用函数方法只有一种:在被创建时立即调用
法4:对象中的函数声明
var obj={ name:'lisi', say:function(){} } obj.say();
- js解析器优先解析函数声明,然后解析使用var操作符声明的变量,但是不赋值(遇到=赋值)函数内部代码在函数调用时执行
- eg:
var a=10; var a=20; console.log(a);
js中没有重载概念,只要函数名相同,即为重写
- eg:
function say(a){ console.log(a,b); } function say(a,b){ console.log(a,b); } say(10);
火狐浏览器控制台输出结果为:
2.函数的调用方式
- ①函数名()
- ②new 函数名() //区别,new 会新开辟内存空间
3.函数的参数
- 形式参数(形参):当前函数需要的参数
- 实际参数(实参):实际调用方法时传递的参数
形参个数和实参个数可以不一致,并且数据类型不限
eg:
function say(形式参数){} var say=function(形参){}say(实际参数);
4.函数的内部属性
arguments:用来保存实参对象 --->以类数组对象的形式保存
- length:实参个数(当前类数组对象的长度)
- callee:从函数内部指向当前拥有arguments的函数
this:this指向函数赖以生存的环境对象
- 函数this值什么时候确定?
- 在拥有当前this的函数被调用时候确定
- 如何确定?(this指向谁?)
- 当前拥有this的函数被谁调用,this就指向谁
5.作为值的函数和作为返回值的函数
值:
- eg:
- 把函数当成一个值给了handler,调用handler就相当于调用say();
function say(){} var handler=say; handler();
返回值:
- eg:return,返回了一个函数,即函数作为了返回值
function say(){ return function(){} }
6.函数的属性
length:
- say.length:返回当前函数的形参的个数
prototype:原型对象
- 用来储存非静态方法/公有属性(方法)
- 每一个函数都有一个原型对象(prototype)
- 每一个原型对象都有一个构造者(constructor)
call():函数的调用方式,可以指定函数内部的this
- 函数名 . call ( this(指定函数内部想要指向的this值) , 实际参数列表 )
say.call(this,1,2,3,4);
apply():函数的调用方式,可以指定函数内部的this
- 函数名.apply(this, [ 实际参数列表 ] );
say.apply(this,[1,2,3,4]);