Function函数:函数对象,任何一个函数的定义,最终都是生成了一个Function对象, Function是自省的(自己调用自己,自己创建自己)。  ----所有函数都是  Function  的实例对象

function Function(){   return 1   }  等价于      var a= new Function ( "return 1");

二.函数对象和函数体的区别

函数对象 是 无序属性 的集合,不用调用函数也会经过预编译,加载到内存中。

函数体是程序块,在调用时,由函数对象执行apply方法进行执行,执行时才会加载到内存中,执行后会弹栈

三。Function函数的原型链:由于是特殊的函数,因此具备:

prototype: 指向Function的prototype对象。

__proto__:指向Function的prototype对象。  //Function 是自省的,由自己创建

由于Function的prototype对象的原型链指向Object的原型对象,因此所有Function也具备Object原型对象的属性和函数。

Function函数的内置属性及函数:

Function的全局属性及函数。

Function的prototype属性及函数

四.Function函数全局属性及函数

1. 函数的全局属性说明: 所有函数对象都具备的属性

length :函数声明时的 参数 数量 ( 形参数量)

function方法传参_javascript

name:函数名

prototype:原型对象,每个函数都有原型对象,在使用new 

 

五. Function的prototype函数

函数的prototype扩展函数如下:

1.apply(this.arguments):执行函数体内容。 

----this  : 在函数体中的this指针。 目标函数体执行时this指针

----arguments :传递给函数体的参数、数组 目标函数的实际参数值 [  ,  ]

apply是执行目标函数体的方法,在函数调用时由JS引擎调用

应用场景:如果目标函数执行时需要修改this指针, 通过改变 apply 中传入 this的值 改变函数中this的指向

apply在事件章节中,想要给目标响应函数传递参数时要用

function fun( a,b){
              console.log(a+b);
             }
             //最简单的调用方式
            fun(20,25);
             //当做构造函数执行
            new fun(20,25);
             //通过调用apply函数执行 this为window对象   ---可以通过改变 this传入值·改变函数中this·指向
            fun.apply(this ,[20,25]);  //数组【】里面包含要传递的值,值用逗号分开

2.call( this, paramter1 ,paramter2 ....) : 执行函数体内容。

-this : 在函数体中的 this指针。

--paramter :传递给函数体的参数

    fun.call( this, 20,25)  ----除了传递参数时不加 【】其余同apply相同

结果----45

3. toString() : 返回函数程序字符串。

对象函数同 函数体没有任何关系,在对象函数的底层,封装了当前函数函数体的字符串代码,执行时执行这段字符串代码即可。

alert(  fun.toString() )
结果---function fun( a,b){
              console.log(a+b);
             }