验证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启动应用程序的一个简单例子
May 11 Javascript
也说JavaScript中String类的replace函数
Sep 22 Javascript
第三篇Bootstrap网格基础
Jun 21 Javascript
使用jquery.qrcode.js生成二维码插件
Oct 17 Javascript
Bootstrap基本样式学习笔记之表格(2)
Dec 07 Javascript
JS数组返回去重后数据的方法解析
Jan 03 Javascript
详解Angular2 关于*ngFor 嵌套循环
May 22 Javascript
移动设备手势事件库Touch.js使用详解
Aug 18 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
Jul 26 Javascript
微信小程序遍历Echarts图表实现多个饼图
Apr 25 Javascript
怎么使用javascript深度拷贝一个数组
Jun 06 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
May 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 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
PHP分页类集锦
2014/11/18 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
2019/10/10 PHP
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
jquery插件锦集【推荐】
2016/12/16 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
python实现五子棋小程序
2019/06/18 Python
python 字符串追加实例
2019/07/20 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
python speech模块的使用方法
2020/09/09 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
银行实习的自我鉴定
2013/12/10 职场文书
元旦晚会感言
2014/03/12 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
成绩单公证书
2014/04/10 职场文书
音乐学专业求职信
2014/07/22 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
2015年教务工作总结
2015/05/23 职场文书
生日赠语
2015/06/23 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
mongodb数据库迁移变更的解决方案
2021/09/04 MongoDB
Python实现灰色关联分析与结果可视化的详细代码
2022/03/25 Python
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技