验证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 相关文章推荐
js parsefloat parseint 转换函数
Jan 21 Javascript
node.js 一个简单的页面输出实现代码
Mar 07 Javascript
js实时获取系统当前时间实例代码
Jun 28 Javascript
jQueryMobile之Helloworld与页面切换的方法
Feb 04 Javascript
JQuery实现超链接鼠标提示效果的方法
Jun 10 Javascript
举例讲解AngularJS中的模块
Jun 17 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
Oct 22 Javascript
js前端解决跨域问题的8种方案(最新最全)
Nov 18 Javascript
JavaScript自执行函数和jQuery扩展方法详解
Oct 27 jQuery
利用jsonp解决js读取本地json跨域的问题
Dec 11 Javascript
JS函数基本定义与用法示例
Jan 15 Javascript
vue接口请求加密实例
Aug 11 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文件上传的例子及参数详解
2013/12/12 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
客户端静态页面玩分页
2006/06/26 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
jQuery Dom元素操作技巧
2018/02/04 jQuery
详解Vue单元测试case写法
2018/05/24 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
Python网络爬虫实例讲解
2016/04/28 Python
Python for循环中的陷阱详解
2018/07/13 Python
Python多项式回归的实现方法
2019/03/11 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
python os.rename实例用法详解
2020/12/06 Python
CSS3打造百度贴吧的3D翻牌效果示例
2017/01/04 HTML / CSS
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
奥地利度假券的专家:we-are.travel
2019/04/10 全球购物
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
机电一体化应届生求职信范文
2014/01/24 职场文书
幼儿园优秀教师事迹
2014/02/13 职场文书
纠风工作实施方案
2014/03/15 职场文书
岗位说明书标准范本
2014/07/30 职场文书
12.4法制宣传日标语
2014/10/08 职场文书
导游词之平津战役纪念馆
2019/11/04 职场文书
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS