验证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 相关文章推荐
firefox事件处理之自动查找event的函数(用于onclick=foo())
Aug 05 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
Mar 28 Javascript
jquery+ajax实现跨域请求的方法
Jan 20 Javascript
jQuery结合CSS制作动态的下拉菜单
Oct 27 Javascript
javascript 中的 delete及delete运算符
Nov 15 Javascript
给angular加上动画效遇到的问题总结
Feb 17 Javascript
Bootstrap自定义文件上传下载样式
May 26 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
Dec 25 Javascript
ES6的解构赋值实例详解
May 06 Javascript
在vue项目中使用sass语法问题
Jul 18 Javascript
js HTML DOM EventListener功能与用法实例分析
Apr 27 Javascript
JavaScript通如何过RGraph实现动态仪表盘
Oct 15 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
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
php pki加密技术(openssl)详解
2013/07/01 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
JQuery解析XML的方法小结
2016/04/02 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
Node.js EventEmmitter事件监听器用法实例分析
2019/01/07 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
Javascript Web Worker使用过程解析
2020/03/16 Javascript
JavaScript实现拖拽效果
2020/03/16 Javascript
pycharm 使用心得(三)Hello world!
2014/06/05 Python
python多线程操作实例
2014/11/21 Python
python3 爬取图片的实例代码
2018/11/06 Python
Python实现八皇后问题示例代码
2018/12/09 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
Nike瑞士官网:Nike CH
2021/01/18 全球购物
执行力心得体会
2013/12/31 职场文书
幼儿园教师培训制度
2014/01/16 职场文书
婚礼司仪主持词
2014/03/14 职场文书
建筑工地标语
2014/06/18 职场文书
教师工作失职检讨书
2014/09/18 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
交通事故协议书范文
2014/10/23 职场文书
团代会邀请函
2015/02/02 职场文书
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS