验证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 相关文章推荐
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
Nov 04 Javascript
javascript正则表达式中参数g(全局)的作用
Nov 11 Javascript
利用jQuery实现可以编辑的表格
May 26 Javascript
JavaScript 实现打印,打印预览,打印设置
Dec 30 Javascript
学习JavaScript设计模式(代理模式)
Dec 03 Javascript
javascript实现简单的全选和反选功能
Jan 05 Javascript
详解Backbone.js框架中的模型Model与其集合collection
May 05 Javascript
bootstrap提示标签、提示框实现代码
Dec 28 Javascript
js中如何完美的解析数据
Mar 18 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
Aug 01 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
Dec 03 Javascript
详解小程序如何避免多次点击,重复触发事件
Apr 08 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表单请求获得数据求和示例
2014/05/15 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
封装了jQuery的Ajax请求全局配置
2015/02/05 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
vue中created和mounted的区别浅析
2019/08/13 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
[40:19]2018完美盛典CS.GO表演赛
2018/12/17 DOTA
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
美国性感女装网站:bebe
2017/03/04 全球购物
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
次世代生活态度:Hypebeast
2018/07/05 全球购物
防沙治沙典型材料
2014/05/07 职场文书
会计系毕业求职信
2014/08/07 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
Python中的 enumerate和zip详情
2022/05/30 Python