验证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滑动门代码
Dec 19 Javascript
JavaScript 在各个浏览器中执行的耐性
Apr 06 Javascript
JavaScript解八皇后问题的方法总结
Jun 12 Javascript
Javascript基础_简单比较undefined和null 值
Jun 14 Javascript
AngularJs ng-route路由详解及实例代码
Sep 14 Javascript
js定时器实例分享
Dec 20 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
Dec 25 Javascript
input输入密码变黑点密文的实现方法
Jan 09 Javascript
js中常用的Math方法总结
Jan 12 Javascript
Javascript网页抢红包外挂实现分享
Jan 11 Javascript
在iFrame子页面里实现模态框的方法
Aug 17 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
Oct 28 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
日本十大惊悚动漫
2020/03/04 日漫
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
JavaScript的Cookies
2008/01/16 Javascript
运算符&&的三个不同层次
2013/04/07 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
JavaScript实现三级联动菜单实例代码
2017/06/26 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
nuxt+axios解决前后端分离SSR的示例代码
2017/10/24 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
Python中字典映射类型的学习教程
2015/08/20 Python
python删除字符串中指定字符的方法
2018/08/13 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
python之信息加密题目详解
2019/06/26 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
python对execl 处理操作代码
2020/06/22 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
公司企业表扬信
2014/01/11 职场文书
个人实习生的自我评价
2014/02/16 职场文书
开学典礼演讲稿
2014/05/23 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
小学英语教师研修感悟
2015/11/18 职场文书
2016年端午节寄语
2015/12/04 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL