验证javascript中Object和Function的关系的三段简单代码


Posted in Javascript onJune 27, 2010

话说在楼猪理解和实践能力尚欠火候的时候,在这篇里曾经照搬了李战老师不少东西写在自己的博客里作为“知识储备”。这一次还是不能免俗。在翻到第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 相关文章推荐
Add a Formatted Table to a Word Document
Jun 15 Javascript
Pro JavaScript Techniques学习笔记
Dec 28 Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
Apr 02 Javascript
一个简单的弹性返回顶部JS代码实现介绍
Jun 09 Javascript
js实现按钮控制图片360度翻转特效的方法
Feb 17 Javascript
javascript操作select元素实例分析
Mar 27 Javascript
Angular 4.x 路由快速入门学习
May 03 Javascript
JavaScript反弹动画效果的实现代码
Jul 13 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
Aug 19 Javascript
JavaScript使用类似break机制中断forEach循环的方法
Nov 13 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
Dec 17 Javascript
如何手写一个简易的 Vuex
Oct 10 Javascript
jQuery选择头像并实时显示的代码
Jun 27 #Javascript
Javascript匿名函数的一种应用 代码封装
Jun 27 #Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
Jun 25 #Javascript
让IE6支持min-width和max-width的方法
Jun 25 #Javascript
jQuery与其它库冲突的解决方法
Jun 25 #Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
Jun 25 #Javascript
基于jquery的checkbox下拉框插件代码
Jun 25 #Javascript
You might like
php实现转换ubb代码的方法
2015/06/18 PHP
PHP 中使用explode()函数切割字符串为数组的示例
2017/05/06 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
非常漂亮的JS代码经典广告
2007/10/21 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
2017/05/17 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
2020/02/10 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python获取糗百图片代码实例
2013/12/18 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
AI人工智能 Python实现人机对话
2017/11/13 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
对Python3 解析html的几种操作方式小结
2019/02/16 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
生物技术研究生自荐信
2013/11/12 职场文书
客户表扬信范文
2014/01/10 职场文书
九年级政治教学反思
2014/02/06 职场文书
护理见习报告范文
2014/11/03 职场文书
2014年度个人工作总结
2014/11/07 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书