您的位置:首页 > Web前端 > JavaScript

2 - javascript原型和闭包( 函数和对象的关系)

2016-07-08 00:00 393 查看
摘要: 来自一位很赞的博友...thank you!

函数和对象的关系
上文(一切都是对象)已经提到,函数就是对象的一种,通过instanceof函数就可以判断。

var fn = function(){};
document.writeln(fn instanceof Object);//true

函数是一种对象,但是函数却不像数组一样,你可以说数组是对象的一种,因为数组就像是对象的一个子集一样。但是函数和对象之间,却不仅仅是一种包含和被包含的关系,函数和对象之间的关系比较复杂,甚至有一点鸡生蛋蛋生鸡的逻辑。
还是先看一个小例子吧:

function  Fn(){
this.name ="nihao";
this.age = 23;
}
var fn1 = new Fn();

上面的例子很简单,它能说明:对象可以通过函数来创建的,对!也只能说明这一点。

对象都是通过函数创建的

var obj = {a:10,b:'nihao'};
var arr = [5,true,'string'];

如上创建的对象是通过快捷方式创建,在编程语言中,一般叫做“语法糖”;
言归正传,其实以上代码的本质是:

var obj = new Object();
obj.a = 10;
obj.b="nihao";
var arr = new Array();
arr[0] = 5;
arr[1] = false;
arr[2] = 'string';

而其中的Object 和 Array都是函数。

console.log(typeof (Object));//  function
console.log(typeof (Array));//  function

所以对象都是通过函数创建的。

现在是不是有点晕了,对象是函数创建的,而函数却又是一种对象。函数和对象到底是什么关系?
如果想知道为什么?还得了解prototype (原型)的概念。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: