验证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 相关文章推荐
IE php关于强制下载文件的代码
Aug 23 Javascript
Javascript 面向对象之重载
May 04 Javascript
jquery 操作DOM的基本用法分享
Apr 05 Javascript
js 获取计算后的样式写法及注意事项
Feb 25 Javascript
JS关键字球状旋转效果的实例代码
Nov 29 Javascript
js实现点击链接后延迟3秒再跳转的方法
Jun 05 Javascript
angularjs 中$apply,$digest,$watch详解
Oct 13 Javascript
JS简单实现表格排序功能示例
Dec 20 Javascript
鼠标经过出现气泡框的简单实例
Mar 17 Javascript
webpack打包js文件及部署的实现方法
Dec 18 Javascript
node.js使用http模块创建服务器和客户端完整示例
Feb 10 Javascript
7个你应该知道的JS原生错误类型
Apr 29 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/06/01 PHP
javascript 关闭IE6、IE7
2009/06/01 Javascript
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
js实现日历与定时器
2017/02/22 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
python学习必备知识汇总
2017/09/08 Python
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
美国专注于健康商品的网站:eVitamins
2017/01/23 全球购物
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
如何做好总经理助理
2013/11/12 职场文书
高考寄语大全
2014/04/08 职场文书
《桂花雨》教学反思
2014/04/12 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
餐饮商业计划书范文
2014/04/29 职场文书
个人担保书格式范文
2014/05/12 职场文书
化工工艺设计求职信
2014/06/25 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
西双版纳导游词
2015/02/03 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
房贷工资证明范本
2015/06/12 职场文书
Redis 异步机制
2022/05/15 Redis