验证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插件 tabBox实现代码
Feb 09 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
May 23 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
Jul 01 Javascript
JavaScript将数据转换成整数的方法
Jan 04 Javascript
Laravel中常见的错误与解决方法小结
Aug 30 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
Feb 13 Javascript
jQuery实现可编辑表格并生成json结果(实例代码)
Jul 19 jQuery
JavaScript复制内容到剪贴板的两种常用方法
Feb 27 Javascript
vue计算属性和监听器实例解析
May 10 Javascript
JQuery Ajax动态加载Table数据的实例讲解
Aug 09 jQuery
使用 Node.js 实现图片的动态裁切及算法实例代码详解
Sep 29 Javascript
js实现三角形粒子运动
Sep 22 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
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
php基础知识:控制结构
2006/12/13 PHP
php ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
PHP时间相关常用函数用法示例
2020/06/03 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
一个选择最快的服务器转向代码
2009/04/27 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
2015/05/15 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
关于vuex的学习实践笔记
2017/04/05 Javascript
Bootstrap输入框组件使用详解
2017/06/09 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
jquery实现弹窗(系统提示框)效果
2019/12/10 jQuery
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
Python的高级Git库 Gittle
2014/09/22 Python
python 截取 取出一部分的字符串方法
2017/03/01 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
2019/05/23 Python
pandas取出重复数据的方法
2019/07/04 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
美国浴缸、水槽和水龙头购物网站:Vintage Tub & Bath
2019/11/05 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
某公司.Net方向面试题
2014/04/24 面试题
护理学中专毕业生求职信
2013/11/11 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
公司管理制度范本
2015/08/03 职场文书