博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解javascript原型和闭包(2)——函数和对象的关系
阅读量:5842 次
发布时间:2019-06-18

本文共 1154 字,大约阅读时间需要 3 分钟。

上文()已经提到,函数就是对象的一种,因为通过instanceof函数可以判断。

var fn = function () { };console.log(fn instanceof Object);  // true

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

 

还是先看一个小例子吧。

function Fn() {            this.name = '王福朋';            this.year = 1988;        }        var fn1 = new Fn();

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

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

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

但是不好意思,这个——真的——是一种——“快捷方式”,在编程语言中,一般叫做“语法糖”。

做“语法糖”做的最好的可谓是微软大哥,它把他们家C#那小子弄的不男不女从的,本想图个人见人爱,谁承想还得到处跟人解释——其实它是个男孩!

话归正传——其实以上代码的本质是:

//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));  // functionconsole.log(typeof (Array));  // function

所以,可以很负责任的说——对象都是通过函数来创建的。

 

现在是不是糊涂了—— 对象是函数创建的,而函数却又是一种对象——天哪!函数和对象到底是什么关系啊?

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

 

本系列文章不打算动辄几千字的长篇大论,咱们小步快跑,不至于看的太乏味。

转载于:https://www.cnblogs.com/hefy1108/p/6419422.html

你可能感兴趣的文章
Clion 常用快捷键
查看>>
ios之UIToolBar
查看>>
10道典型的JavaScript面试题
查看>>
centos 6.5 docker  安装
查看>>
依然前往
查看>>
C++静态局部对象
查看>>
Hibernate用JPA注解 CascadeType.REMOVE 不起作用的解决办法
查看>>
一步步学习EF Core(3.EF Core2.0路线图)
查看>>
go语言中的坑
查看>>
python之常用模块
查看>>
1到20阶乘的和
查看>>
网络ASI
查看>>
Luogu P4707 重返现世
查看>>
xml.dom——文档对象模型API
查看>>
目标与绩效管理实战专家胡立
查看>>
富文本编辑器提交内容 报错
查看>>
css3学习 理论之弹性盒模型
查看>>
h5做的时钟
查看>>
Oracle SQL: TO_CHAR and TO_NUMBER 笔记
查看>>
axios 中断请求
查看>>