验证javascript中Object和Function的关系的三段简单代码
时间:2024-04-29 13:43:32
话说在楼猪理解和实践能力尚欠火候的时候,在这篇里曾经照搬了李战老师不少东西写在自己的博客里作为“知识储备”。这一次还是不能免俗。在翻到第5章的时候,被开篇第二段话深深吸引和折服:“函数具有对象的全部特征,你完全可以把函数当对象调用。其实,函数就是对象,只不过比一般的对象多了一个括号“{}”操作符,这个操作符用来执行函数的逻辑,即函数本身还可以被调用,一般对象却不可以被调用,除此之外完全相同”。寥寥数语,却深刻阐释了对象和函数的关系。下面楼猪就通过自己写的几段简单代码,论证一下javascript内置Object和Function的关系。
1、Function就是Object,Object就是Function
alert(Function instanceof Object); // true
alert(Object instanceof Function); // true
如你所看到的那样,通过instanceof操作符,函数就是对象,对象就是函数。
2、既然1是成立的,那么Function扩展的原型方法,Object能“得到”吗?
alert(Object.funcMethod); // undefined
Function.prototype.funcMethod = function() {
/*some function method code here*/
}
alert(Function.funcMethod);
alert(Object.funcMethod);
alert(Function.funcMethod === Object.funcMethod); //true
你没有看错,我们为Function扩展的原型方法funcMethod,Object实现了神奇的“不劳而获”。
3、既然1和2都成立,那么Object扩展的原型方法,Function能“得到”吗?!
代码
alert(Function.objMethod); // undefined
Object.prototype.objMethod = function() {
/*some object method code here*/
}
alert(Object.objMethod);
alert(Function.objMethod);
alert(Function.objMethod === Object.objMethod); //true or false?
上面代码中最后有个问号的那一行是弹出true还是false呢?卖个关子,根据楼猪通篇直白而单纯的表述,你应该已经知道结果了,这里不公布答案了。
最后,容楼猪在这里得意地自恋一下:个人认为上面这三段代码应该比原书中验证“函数就是对象的本质”的代码更具有说服力。
标签:javascript,Object,Function
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python按行读取文件的实现方法【小文件和大文件读取】
2021-12-11 01:31:08
python爬虫字体加密的解决
2021-02-22 12:25:57
![](https://img.aspxhome.com/file/2023/3/105643_0s.png)
python代码实现猜拳小游戏
2023-10-16 19:00:46
![](https://img.aspxhome.com/file/2023/3/63593_0s.jpg)
Python super()函数使用及多重继承
2022-10-06 19:21:37
Python线性方程组求解运算示例
2021-07-26 16:52:29
![](https://img.aspxhome.com/file/2023/9/115069_0s.png)
10款最佳Python开发工具推荐,每一款都是神器
2022-04-13 06:54:13
如何远程连接SQL Server数据库的图文教程
2024-01-12 15:32:32
![](https://img.aspxhome.com/file/2023/6/99966_0s.jpg)
从零开始学习Node.js系列教程二:文本提交与显示方法
2024-05-08 09:35:30
![](https://img.aspxhome.com/file/2023/9/129469_0s.jpg)
Python内置函数dir详解
2023-05-29 13:38:10
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2021-05-10 03:08:18
Python单例模式的两种实现方法
2023-03-03 12:31:09
python jinjia2的项目使用
2021-03-16 04:57:21
Python实现打砖块小游戏代码实例
2021-02-27 00:35:38
![](https://img.aspxhome.com/file/2023/3/82693_0s.gif)
asp实现非大小写的替换函数
2010-05-19 21:23:00
举例讲解Python的Tornado框架实现数据可视化的教程
2022-01-16 23:56:52
![](https://img.aspxhome.com/file/2023/1/123811_0s.png)
Centos5.x下升级python到python2.7版本教程
2023-04-15 13:50:07
SQL语句练习实例之七 剔除不需要的记录行
2011-11-03 16:50:51
Django模板语言 Tags使用详解
2022-09-27 23:37:35
MySQL5.7 JSON类型使用详解
2024-01-15 23:57:04
Mysql连接本地报错:1130-host ... is not allowed to connect to this MySQL server解决
2024-01-28 04:52:50
![](https://img.aspxhome.com/file/2023/0/129920_0s.png)