深入理解javascript原型和闭包(2)——函数和对象的关系

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

一个小例子:

    function Fn() {
        this.name = '小明';
        this.year = 1991;
    }
    var fn1 = new Fn();

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

但是要说——对象都是通过函数创建的——有些人可能反驳:不对!因为:

var obj = { a: 10, b: 20 };
var arr = [5, ‘x’, true];
但是不好意思,这个——只是一种“快捷方式”,在编程语言中,一般叫做“语法糖”。
其实以上代码的本质是:
//var obj = { a: 10, b: 20 };
//var arr = [5, ‘x’, true];

    var obj = new Object();
    obj.a = 10;
    obj.b = 20;

    var arr = new Array();
    arr[0] = 5;
    arr[1] = 'x';
    arr[2] = true;

而其中的 Object 和 Array 都是函数:
console.log(typeof (Object)); // function
console.log(typeof (Array)); // function
所以,可以很负责任的说——对象都是通过函数来创建的。

对象是函数创建的,而函数却又是一种对象——函数和对象到底是什么关系啊?

揭开这个谜底,还得先去了解一下另一位老朋友——prototype原型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值