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

函数和对象的关系 上文(一切都是对象)已经提到,函数就是对象的一种,通过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 (原型)的概念。

转载于:https://my.oschina.net/u/2845293/blog/708598

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值