验证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 相关文章推荐
jquery动画1.加载指示器
Aug 24 Javascript
JS方法调用括号的问题探讨
Jan 24 Javascript
node.js中的buffer.toJSON方法使用说明
Dec 14 Javascript
javascript实现链接单选效果的方法
May 13 Javascript
Javascript函数的参数
Jul 16 Javascript
用jQuery向div中添加Html文本内容的简单实现
Jul 13 Javascript
javascript监听页面刷新和页面关闭事件方法详解
Jan 09 Javascript
JavaScript实现单例模式实例分享
Dec 22 Javascript
element-ui多文件上传的实现示例
Apr 10 Javascript
vue登录页面cookie的使用及页面跳转代码
Jul 10 Javascript
javascript合并两个数组最简单的实现方法
Sep 14 Javascript
vue结合el-upload实现腾讯云视频上传功能
Jul 01 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
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
thinkPHP框架中layer.js的封装与使用方法示例
2019/01/18 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
js 链式延迟执行DOME
2012/01/04 Javascript
Js nodeType 属性全面解析
2013/11/14 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
python方向键控制上下左右代码
2018/01/20 Python
python实现微信自动回复功能
2018/04/11 Python
python计算n的阶乘的方法代码
2019/10/25 Python
PyTorch 对应点相乘、矩阵相乘实例
2019/12/27 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
HTML5应用之文件上传
2016/12/30 HTML / CSS
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
给物业的表扬信
2014/01/21 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
2015年暑假生活总结
2015/07/13 职场文书
企业宣传稿范文
2015/07/23 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery