JavaScript中的Function类

每个函数都是Function类型的实例

三种创建函数的方法:

// 方法一
function sum(num1, num2) {
  return num1+num2;
}

//方法二
var sum = function(num1, num2) {
  return num1+num2;
};

//方法三
var sum = new Function(“num1”, “num2”, “return num1+num2;”);

最好不用方法三去创建函数,但是方法三可以更清晰的看到,函数就是一个对象,通过new实例化得到。而函数名就是一个保存此对象的引用

也正是因为函数名就是一个特殊的变量,所以,在JavaScript中,没有函数重载这一说,有的只是覆盖

函数声明提升:函数的声明可以提升到作用域的顶层,从而在函数创建之前调用函数也不回导致错误:

alert(sum(1, 2));
function sum(a, b) { return a + b }

上面说到函数其实就是一个特殊的变量,所以作为一个值的函数有以下作用:

  1. 函数作为另一个函数的参数
  2. 函数作为另一个函数的返回值

在函数内部有两个特殊的对象:arguments, this 。

arguments:arguments是一个类数组对象,里面保存着调用函数时传入函数的参数
arguments有一个叫callee的属性,arguments.callee保存着这个函数的引用。

this:this引用的是函数执行的环境对象。

函数作为对象本身有两个对象:length, prototype 。

length:length属性是声明函数时参数的个数。

prototype:prototype里面保存着Function类的实例方法。

函数作为对象有三个方法:call(), apply(), bind() 。

三个方法的作用都是改变函数内部的this对象的引用。

apply():apply方法的第一个参数是一个对象,用来替代调用该方法的函数的this,第二个是一个数组,保存着函数的参数。

call():call方法的第一个参数的作用与call相同,不同的是,后面的参数可以是多个,每一个都是函数的参数。

bind():bind方法也可以修改作用域,但不同的时,此方法会返回一个新的函数,这个新的函数中的this会是bind方法中传入的参数对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,455评论 0 4
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,378评论 2 17
  • title: js面向对象date: 2017年8月17日 18:58:05updated: 2017年8月27日...
    lu900618阅读 3,647评论 0 2
  • 车水马龙的街头,她悠闲的在等过马路,天气很好,阳光明媚,好像阳光都倾泻在脸上了,纷纷扰扰的人群,好像都让阳光给晒得...
    沐竺阅读 3,318评论 0 0
  • 文 | 婷兮 01 从呱呱坠地的那一瞬,见到的是护士是医生,接着见到的是爸爸妈妈,然后到三姑六婆七大婶八大姨。长大...
    婷兮阅读 5,367评论 11 11