验证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 相关文章推荐
List Installed Software Features
Jun 11 Javascript
javascript 命名空间以提高代码重用性
Nov 13 Javascript
jQuery操作checkbox选择(list/table)
Apr 07 Javascript
js加减乘除丢失精度问题解决方法
May 16 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
Oct 17 Javascript
jQuery中prevAll()方法用法实例
Jan 08 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
Feb 28 Javascript
基于Node.js的WebSocket通信实现
Mar 11 Javascript
JavaScript创建表格的方法
Apr 13 Javascript
微信小程序清空输入框信息与实现屏幕往上滚动的示例代码
Jun 23 Javascript
vue通过过滤器实现数据格式化
Jul 20 Javascript
JavaScript中ES6规范中let和const的用法和区别
Aug 06 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/06/06 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
jquery 层次选择器siblings与nextAll的区别介绍
2013/08/02 Javascript
网页中表单按回车就自动提交的问题的解决方案
2014/11/03 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
Python自动扫雷实现方法
2015/07/25 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
Python3实现二叉树的最大深度
2019/09/30 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
CSS3标注引用的出处和来源的方法
2020/02/25 HTML / CSS
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
假日旅行社实习自我鉴定
2013/09/24 职场文书
护理自我鉴定范文
2013/10/06 职场文书
建筑施工员岗位职责
2013/11/26 职场文书
户籍证明的格式
2014/01/13 职场文书
机电专业求职信
2014/06/14 职场文书
小学运动会报道稿
2014/10/04 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书
学会Python数据可视化必须尝试这7个库
2021/06/16 Python
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS