验证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定时器怎么写?就是在特定时间执行某段程序
Oct 11 Javascript
jquery教程ajax请求json数据示例
Jan 13 Javascript
AngularJS HTML编译器介绍
Dec 06 Javascript
jQuery mobile 移动web(4)
Dec 20 Javascript
Node.js开发者必须了解的4个JS要点
Feb 21 Javascript
JavaScript的Backbone.js框架入门学习指引
May 07 Javascript
微信小程序 实例应用(记账)详解
Sep 28 Javascript
Node.js Express 框架 POST方法详解
Jan 23 Javascript
jQuery鼠标移动图片上实现放大效果
Jun 25 jQuery
浅析JS中常用类型转换及运算符表达式
Jul 23 Javascript
详解可以用在VS Code中的正则表达式小技巧
May 14 Javascript
vue3自定义dialog、modal组件的方法
Jan 04 Vue.js
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警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
jquery的颜色选择插件实例代码
2008/10/02 Javascript
javascript引导程序
2008/10/26 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
关于js对textarea换行符的处理方法浅析
2018/08/03 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
python每隔N秒运行指定函数的方法
2015/03/16 Python
Python实现栈的方法
2015/05/26 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
虚拟机下载python是否需要联网
2020/07/27 Python
python飞机大战游戏实例讲解
2020/12/04 Python
《雾凇》教学反思
2014/02/17 职场文书
公司请假条格式
2014/04/11 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
拾金不昧表扬稿
2015/01/16 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python