Function类型

148 阅读1分钟

一、定义函数的三种方式

  1. 函数声明方式 function a(){}
  2. 定义函数表达式方式 var a = function(){};
  3. 构造函数方式 var a = new Function(...arg,function){} 不推荐,但是指明了函数是对象,

二、函数是对象,那么函数名就是指针,跟包含对象指针的其他变量没有什么不同。

三、函数声明跟定义函数表达式区别

  1. 函数声明在解析过程中会被函数声明提前,无论何时调用都可以
  2. 定义函数表达式,则必须是执行到当前语句时,才会被执行。此时才可以被调用

四、arguments.callee

  1. callee属性是一个指针,指向拥有这个arguments对象的函数。

五、函数的属性跟方法

  1. 每个函数都包含的两个属性:prototype和length
  2. length:指的是参数个数
  3. prototype:保存函数所有的实例方法,例如toString()和valueOf()等方法实际上都保存在prototype名下,只不过通过各自对象实例调用而已。 是不可枚举的,所以不能被for in发现
  4. call和apply方法:每个函数都包含这两个非继承而来的方法。 他们都是在指定作用域中调用函数
  5. toLocalString()和toString()方法和valueOf()都是函数继承来的。 六、基本包装类型
  6. 基本包装类型的存在期只在执行的这一行,这行过去后,就会立马被销毁。因此基本包装类型没有属性跟方法
  7. var s = new String("nihao"); typeof(s); //"object" 对 基本 包装 类型 的 实例 调用 typeof 会 返回" object",