验证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 相关文章推荐
Prototype Template对象 学习
Jul 19 Javascript
XmlUtils JS操作XML工具类
Oct 01 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
Mar 04 Javascript
JS.elementGetStyle(element, style)应用示例
Sep 24 Javascript
javascript中打印当前的时间实现思路及代码
Dec 18 Javascript
控制input输入框中提示信息的显示和隐藏的方法
Feb 12 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
May 17 Javascript
JavaScript生成带有缩进的表格代码
Jun 15 Javascript
js中通过getElementsByName访问name集合对象的方法
Oct 31 Javascript
axios post提交formdata的实例
Mar 16 Javascript
layui上传图片到服务器的非项目目录下的方法
Sep 26 Javascript
Node.js web 应用如何封装到Docker容器中
Sep 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
PHP一些常用的正则表达式字符的一些转换
2008/07/29 PHP
一个简单php扩展介绍与开发教程
2010/08/19 PHP
PHP5下$_SERVER变量不再受magic_quotes_gpc保护的弥补方法
2012/10/31 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
[46:55]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
为Python的web框架编写前端模版的教程
2015/04/30 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
Python set常用操作函数集锦
2017/11/15 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
介绍一下Java的事务处理
2012/12/07 面试题
工商管理专业学生的自我评价
2013/10/01 职场文书
学校元旦晚会方案
2014/02/19 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
酒店员工手册范本
2015/05/14 职场文书
诚信考试主题班会
2015/08/17 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android