码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript之Function类型

时间:2015-03-05 12:52:54      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

以下的学习笔记来自于一本在 JavaScript 领域非常有名的书籍《 JavaScript 高级程序设计(第 3 版)》,和 孔浩老师的视频教程(孔老师也是参考这本书,丰富了这本书上的内容)。我只是一个知识的搬运工,以期通过搬运知识来加深对知识的理解。

 

函数是 ECMAScript 中最最有意思的部分,最最重要的部分。最有意思的根源在于:函数是对象

函数就是一个非常特殊的对象,是一个 Function 类型的实例,其实在内存中存储的操作是通过一个键值对来存储的。

函数的第 1 种定义方式,即使用函数声明语法来定义的:

function fn1() {
  alert("fn1");
}

由于函数是一个对象,所以可以通过如下方式定义,以下是通过函数的拷贝来完成赋值,两个引用并没有指向同一个对象

// 这句话在底层实际上是完成了一次函数的【复制】,fn2 和 fn1 的引用并没有指向同一个对象。
var fn2 = fn1;

fn2();
fn1 = function() {
  alert("fnn1");
}

以下是 函数 和 对象 在 “=” 赋值上的重要区别:

函数虽然是一个对象,但是却和对象有一些区别,对象是通过引用的指向完成对象的赋值的,而函数却是通过对象的拷贝来完成的。
所以上面的函数 fn1 虽然变了,并不会影响 fn2 。

下面我们再来看看对象的赋值,对于对象而言,是通过引用的指向来完成赋值的,此时修改 o1 或者 o2 会将两个值都受到影响:

var o1 = new Object();
var o2 = o1;
o2.name = "Leon";
alert(o1.name);

JavaScript 的 函数 没有重载(理解的关键在于“把函数名想象为指针”)

笔者注:正是因为函数名就是一个指针(书上的原话是“函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。”)

 

JavaScript之Function类型

标签:

原文地址:http://www.cnblogs.com/liwei1419/p/4315251.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!