验证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 05 Javascript
菜鸟javascript基础资料整理3 正则
Dec 06 Javascript
基于jquery的地址栏射击游戏代码
Mar 10 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
Dec 27 Javascript
jQuery实现的一个自定义Placeholder属性插件
Aug 11 Javascript
JavaScript中Cookies的相关使用教程
Jun 04 Javascript
js实现Select列表各项上移和下移的方法
Aug 14 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
Dec 23 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
Dec 28 Javascript
基于JavaScript实现跳转提示页面
Sep 24 Javascript
angularjs实现首页轮播图效果
Apr 14 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
Sep 25 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
很实用的一个完整email发送程序
2006/10/09 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
JavaScript Konami Code 实现代码
2009/07/29 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
2013/08/28 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
整理Javascript数组学习笔记
2015/11/29 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
2017/01/21 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
2020/09/02 Javascript
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
python采集博客中上传的QQ截图文件
2014/07/18 Python
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
python中正则表达式的使用方法
2018/02/25 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
2020/03/06 Python
python编程的核心知识点总结
2021/02/08 Python
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
会计师事务所审计实习自我鉴定
2013/09/20 职场文书
劳动实践课感言
2014/02/01 职场文书
终止或解除劳动合同及劳动关系的证明书
2014/10/06 职场文书
市场部岗位职责
2015/02/12 职场文书
投诉书格式范本
2015/07/02 职场文书
欢迎新生标语2015
2015/07/16 职场文书
办公室管理规章制度
2015/08/04 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript